
// Copyright (C) 2009-2011 Luca Piccioni
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;

#pragma warning disable 1572, 1573

namespace Derm.OpenGL {

	/// <summary>
	/// Implementation of the OpenGL specification 
	/// </summary>
	public unsafe partial class Gl : ProcLoader
	{

		/// <summary>
		/// Binding for glActiveProgramEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ActiveProgramEXT(UInt32 program) {
			if      (Delegates.pglActiveProgramEXT != null)
				Delegates.pglActiveProgramEXT(program);
			else
				throw new InvalidOperationException("binding point ActiveProgramEXT cannot be found");
			LogProc("glActiveProgramEXT({0})", program);
		}

		/// <summary>
		/// Binding for glActiveStencilFaceEXT function.
		/// </summary>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void ActiveStencilFaceEXT(int face) {
			if      (Delegates.pglActiveStencilFaceEXT != null)
				Delegates.pglActiveStencilFaceEXT(face);
			else
				throw new InvalidOperationException("binding point ActiveStencilFaceEXT cannot be found");
			LogProc("glActiveStencilFaceEXT({0})", face);
		}

		/// <summary>
		/// Binding for glApplyTextureEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void ApplyTextureEXT(int mode) {
			if      (Delegates.pglApplyTextureEXT != null)
				Delegates.pglApplyTextureEXT(mode);
			else
				throw new InvalidOperationException("binding point ApplyTextureEXT cannot be found");
			LogProc("glApplyTextureEXT({0})", mode);
		}

		/// <summary>
		/// Binding for glAreTexturesResidentEXT function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textures">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// <param name="residences">
		/// A <see cref="T:System.Boolean*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static bool AreTexturesResidentEXT(Int32 n, UInt32[] textures, [Out] bool[] residences) {
			bool retvalue;
			unsafe {
				fixed (UInt32* fp_textures = textures)
				fixed (bool* fp_residences = residences)
				{
					if      (Delegates.pglAreTexturesResidentEXT != null)
						retvalue = (Delegates.pglAreTexturesResidentEXT(n, fp_textures, fp_residences));
					else
						throw new InvalidOperationException("binding point AreTexturesResidentEXT cannot be found");
				}
			}
			LogProc("glAreTexturesResidentEXT({0}, {1}, {2}) = {3}", n, textures, residences, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glArrayElementEXT function.
		/// </summary>
		/// <param name="i">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void ArrayElementEXT(int i) {
			if      (Delegates.pglArrayElementEXT != null)
				Delegates.pglArrayElementEXT(i);
			else
				throw new InvalidOperationException("binding point ArrayElementEXT cannot be found");
			LogProc("glArrayElementEXT({0})", i);
		}

		/// <summary>
		/// Binding for glBeginTransformFeedbackEXT function.
		/// </summary>
		/// <param name="primitiveMode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void BeginTransformFeedbackEXT(int primitiveMode) {
			if      (Delegates.pglBeginTransformFeedbackEXT != null)
				Delegates.pglBeginTransformFeedbackEXT(primitiveMode);
			else
				throw new InvalidOperationException("binding point BeginTransformFeedbackEXT cannot be found");
			LogProc("glBeginTransformFeedbackEXT({0})", primitiveMode);
		}

		/// <summary>
		/// Binding for glBeginVertexShaderEXT function.
		/// </summary>
		/// @note This routine is available from OpenGL 1.2
		public static void BeginVertexShaderEXT() {
			if      (Delegates.pglBeginVertexShaderEXT != null)
				Delegates.pglBeginVertexShaderEXT();
			else
				throw new InvalidOperationException("binding point BeginVertexShaderEXT cannot be found");
			LogProc("glBeginVertexShaderEXT()");
		}

		/// <summary>
		/// Binding for glBindBufferBaseEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void BindBufferBaseEXT(int target, UInt32 index, UInt32 buffer) {
			if      (Delegates.pglBindBufferBaseEXT != null)
				Delegates.pglBindBufferBaseEXT(target, index, buffer);
			else
				throw new InvalidOperationException("binding point BindBufferBaseEXT cannot be found");
			LogProc("glBindBufferBaseEXT({0}, {1}, {2})", target, index, buffer);
		}

		/// <summary>
		/// Binding for glBindBufferOffsetEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void BindBufferOffsetEXT(int target, UInt32 index, UInt32 buffer, IntPtr offset) {
			if      (Delegates.pglBindBufferOffsetEXT != null)
				Delegates.pglBindBufferOffsetEXT(target, index, buffer, offset);
			else
				throw new InvalidOperationException("binding point BindBufferOffsetEXT cannot be found");
			LogProc("glBindBufferOffsetEXT({0}, {1}, {2}, {3})", target, index, buffer, offset);
		}

		/// <summary>
		/// Binding for glBindBufferRangeEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void BindBufferRangeEXT(int target, UInt32 index, UInt32 buffer, IntPtr offset, UInt32 size) {
			if      (Delegates.pglBindBufferRangeEXT != null)
				Delegates.pglBindBufferRangeEXT(target, index, buffer, offset, size);
			else
				throw new InvalidOperationException("binding point BindBufferRangeEXT cannot be found");
			LogProc("glBindBufferRangeEXT({0}, {1}, {2}, {3}, {4})", target, index, buffer, offset, size);
		}

		/// <summary>
		/// Binding for glBindFragDataLocationEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="color">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void BindFragDataLocationEXT(UInt32 program, UInt32 color, string name) {
			if      (Delegates.pglBindFragDataLocationEXT != null)
				Delegates.pglBindFragDataLocationEXT(program, color, name);
			else
				throw new InvalidOperationException("binding point BindFragDataLocationEXT cannot be found");
			LogProc("glBindFragDataLocationEXT({0}, {1}, {2})", program, color, name);
		}

		/// <summary>
		/// Binding for glBindFramebufferEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BindFramebufferEXT(int target, UInt32 framebuffer) {
			if      (Delegates.pglBindFramebufferEXT != null)
				Delegates.pglBindFramebufferEXT(target, framebuffer);
			else
				throw new InvalidOperationException("binding point BindFramebufferEXT cannot be found");
			LogProc("glBindFramebufferEXT({0}, {1})", target, framebuffer);
		}

		/// <summary>
		/// Binding for glBindImageTextureEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="layered">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="layer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="access">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void BindImageTextureEXT(UInt32 index, UInt32 texture, int level, bool layered, int layer, int access, int format) {
			if      (Delegates.pglBindImageTextureEXT != null)
				Delegates.pglBindImageTextureEXT(index, texture, level, layered, layer, access, format);
			else
				throw new InvalidOperationException("binding point BindImageTextureEXT cannot be found");
			LogProc("glBindImageTextureEXT({0}, {1}, {2}, {3}, {4}, {5}, {6})", index, texture, level, layered, layer, access, format);
		}

		/// <summary>
		/// Binding for glBindLightParameterEXT function.
		/// </summary>
		/// <param name="light">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static UInt32 BindLightParameterEXT(int light, int value) {
			UInt32 retvalue;
			if      (Delegates.pglBindLightParameterEXT != null)
				retvalue = (Delegates.pglBindLightParameterEXT(light, value));
			else
				throw new InvalidOperationException("binding point BindLightParameterEXT cannot be found");
			LogProc("glBindLightParameterEXT({0}, {1}) = {2}", light, value, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glBindMaterialParameterEXT function.
		/// </summary>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static UInt32 BindMaterialParameterEXT(int face, int value) {
			UInt32 retvalue;
			if      (Delegates.pglBindMaterialParameterEXT != null)
				retvalue = (Delegates.pglBindMaterialParameterEXT(face, value));
			else
				throw new InvalidOperationException("binding point BindMaterialParameterEXT cannot be found");
			LogProc("glBindMaterialParameterEXT({0}, {1}) = {2}", face, value, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glBindMultiTextureEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void BindMultiTextureEXT(int texunit, int target, UInt32 texture) {
			if      (Delegates.pglBindMultiTextureEXT != null)
				Delegates.pglBindMultiTextureEXT(texunit, target, texture);
			else
				throw new InvalidOperationException("binding point BindMultiTextureEXT cannot be found");
			LogProc("glBindMultiTextureEXT({0}, {1}, {2})", texunit, target, texture);
		}

		/// <summary>
		/// Binding for glBindParameterEXT function.
		/// </summary>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static UInt32 BindParameterEXT(int value) {
			UInt32 retvalue;
			if      (Delegates.pglBindParameterEXT != null)
				retvalue = (Delegates.pglBindParameterEXT(value));
			else
				throw new InvalidOperationException("binding point BindParameterEXT cannot be found");
			LogProc("glBindParameterEXT({0}) = {1}", value, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glBindRenderbufferEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BindRenderbufferEXT(int target, UInt32 renderbuffer) {
			if      (Delegates.pglBindRenderbufferEXT != null)
				Delegates.pglBindRenderbufferEXT(target, renderbuffer);
			else
				throw new InvalidOperationException("binding point BindRenderbufferEXT cannot be found");
			LogProc("glBindRenderbufferEXT({0}, {1})", target, renderbuffer);
		}

		/// <summary>
		/// Binding for glBindTexGenParameterEXT function.
		/// </summary>
		/// <param name="unit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static UInt32 BindTexGenParameterEXT(int unit, int coord, int value) {
			UInt32 retvalue;
			if      (Delegates.pglBindTexGenParameterEXT != null)
				retvalue = (Delegates.pglBindTexGenParameterEXT(unit, coord, value));
			else
				throw new InvalidOperationException("binding point BindTexGenParameterEXT cannot be found");
			LogProc("glBindTexGenParameterEXT({0}, {1}, {2}) = {3}", unit, coord, value, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glBindTextureEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void BindTextureEXT(int target, UInt32 texture) {
			if      (Delegates.pglBindTextureEXT != null)
				Delegates.pglBindTextureEXT(target, texture);
			else
				throw new InvalidOperationException("binding point BindTextureEXT cannot be found");
			LogProc("glBindTextureEXT({0}, {1})", target, texture);
		}

		/// <summary>
		/// Binding for glBindTextureUnitParameterEXT function.
		/// </summary>
		/// <param name="unit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static UInt32 BindTextureUnitParameterEXT(int unit, int value) {
			UInt32 retvalue;
			if      (Delegates.pglBindTextureUnitParameterEXT != null)
				retvalue = (Delegates.pglBindTextureUnitParameterEXT(unit, value));
			else
				throw new InvalidOperationException("binding point BindTextureUnitParameterEXT cannot be found");
			LogProc("glBindTextureUnitParameterEXT({0}, {1}) = {2}", unit, value, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glBindVertexShaderEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BindVertexShaderEXT(UInt32 id) {
			if      (Delegates.pglBindVertexShaderEXT != null)
				Delegates.pglBindVertexShaderEXT(id);
			else
				throw new InvalidOperationException("binding point BindVertexShaderEXT cannot be found");
			LogProc("glBindVertexShaderEXT({0})", id);
		}

		/// <summary>
		/// Binding for glBinormal3bEXT function.
		/// </summary>
		/// <param name="bx">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// <param name="by">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// <param name="bz">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Binormal3EXT(sbyte bx, sbyte by, sbyte bz) {
			if      (Delegates.pglBinormal3bEXT != null)
				Delegates.pglBinormal3bEXT(bx, by, bz);
			else
				throw new InvalidOperationException("binding point Binormal3EXT cannot be found");
			LogProc("glBinormal3bEXT({0}, {1}, {2})", bx, by, bz);
		}

		/// <summary>
		/// Binding for glBinormal3bvEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.SByte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Binormal3EXT(sbyte[] v) {
			unsafe {
				fixed (sbyte* fp_v = v)
				{
					if      (Delegates.pglBinormal3bvEXT != null)
						Delegates.pglBinormal3bvEXT(fp_v);
					else
						throw new InvalidOperationException("binding point Binormal3EXT cannot be found");
				}
			}
			LogProc("glBinormal3bvEXT({0})", v);
		}

		/// <summary>
		/// Binding for glBinormal3dEXT function.
		/// </summary>
		/// <param name="bx">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="by">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="bz">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Binormal3EXT(double bx, double by, double bz) {
			if      (Delegates.pglBinormal3dEXT != null)
				Delegates.pglBinormal3dEXT(bx, by, bz);
			else
				throw new InvalidOperationException("binding point Binormal3EXT cannot be found");
			LogProc("glBinormal3dEXT({0}, {1}, {2})", bx, by, bz);
		}

		/// <summary>
		/// Binding for glBinormal3dvEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Binormal3EXT(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglBinormal3dvEXT != null)
						Delegates.pglBinormal3dvEXT(fp_v);
					else
						throw new InvalidOperationException("binding point Binormal3EXT cannot be found");
				}
			}
			LogProc("glBinormal3dvEXT({0})", v);
		}

		/// <summary>
		/// Binding for glBinormal3fEXT function.
		/// </summary>
		/// <param name="bx">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="by">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="bz">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Binormal3EXT(float bx, float by, float bz) {
			if      (Delegates.pglBinormal3fEXT != null)
				Delegates.pglBinormal3fEXT(bx, by, bz);
			else
				throw new InvalidOperationException("binding point Binormal3EXT cannot be found");
			LogProc("glBinormal3fEXT({0}, {1}, {2})", bx, by, bz);
		}

		/// <summary>
		/// Binding for glBinormal3fvEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Binormal3EXT(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglBinormal3fvEXT != null)
						Delegates.pglBinormal3fvEXT(fp_v);
					else
						throw new InvalidOperationException("binding point Binormal3EXT cannot be found");
				}
			}
			LogProc("glBinormal3fvEXT({0})", v);
		}

		/// <summary>
		/// Binding for glBinormal3iEXT function.
		/// </summary>
		/// <param name="bx">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="by">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bz">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Binormal3EXT(int bx, int by, int bz) {
			if      (Delegates.pglBinormal3iEXT != null)
				Delegates.pglBinormal3iEXT(bx, by, bz);
			else
				throw new InvalidOperationException("binding point Binormal3EXT cannot be found");
			LogProc("glBinormal3iEXT({0}, {1}, {2})", bx, by, bz);
		}

		/// <summary>
		/// Binding for glBinormal3ivEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Binormal3EXT(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglBinormal3ivEXT != null)
						Delegates.pglBinormal3ivEXT(fp_v);
					else
						throw new InvalidOperationException("binding point Binormal3EXT cannot be found");
				}
			}
			LogProc("glBinormal3ivEXT({0})", v);
		}

		/// <summary>
		/// Binding for glBinormal3ivEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Binormal3EXT(int* v) {
			unsafe {
				if      (Delegates.pglBinormal3ivEXT != null)
					Delegates.pglBinormal3ivEXT(v);
				else
					throw new InvalidOperationException("binding point Binormal3EXT cannot be found");
			}
			LogProc("glBinormal3ivEXT({0})", "v");
		}
		

		/// <summary>
		/// Binding for glBinormal3sEXT function.
		/// </summary>
		/// <param name="bx">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="by">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="bz">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Binormal3EXT(Int16 bx, Int16 by, Int16 bz) {
			if      (Delegates.pglBinormal3sEXT != null)
				Delegates.pglBinormal3sEXT(bx, by, bz);
			else
				throw new InvalidOperationException("binding point Binormal3EXT cannot be found");
			LogProc("glBinormal3sEXT({0}, {1}, {2})", bx, by, bz);
		}

		/// <summary>
		/// Binding for glBinormal3svEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Binormal3EXT(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglBinormal3svEXT != null)
						Delegates.pglBinormal3svEXT(fp_v);
					else
						throw new InvalidOperationException("binding point Binormal3EXT cannot be found");
				}
			}
			LogProc("glBinormal3svEXT({0})", v);
		}

		/// <summary>
		/// Binding for glBinormalPointerEXT function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void BinormalPointerEXT(int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglBinormalPointerEXT != null)
					Delegates.pglBinormalPointerEXT(type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point BinormalPointerEXT cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glBinormalPointerEXT({0}, {1}, {2})", type, stride, pointer);
		}

		/// <summary>
		/// Binding for glBlendColorEXT function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="alpha">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void BlendColorEXT(float red, float green, float blue, float alpha) {
			if      (Delegates.pglBlendColorEXT != null)
				Delegates.pglBlendColorEXT(red, green, blue, alpha);
			else
				throw new InvalidOperationException("binding point BlendColorEXT cannot be found");
			LogProc("glBlendColorEXT({0}, {1}, {2}, {3})", red, green, blue, alpha);
		}

		/// <summary>
		/// Binding for glBlendEquationEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void BlendEquationEXT(int mode) {
			if      (Delegates.pglBlendEquationEXT != null)
				Delegates.pglBlendEquationEXT(mode);
			else
				throw new InvalidOperationException("binding point BlendEquationEXT cannot be found");
			LogProc("glBlendEquationEXT({0})", mode);
		}

		/// <summary>
		/// Binding for glBlendEquationSeparateEXT function.
		/// </summary>
		/// <param name="modeRGB">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="modeAlpha">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BlendEquationSeparateEXT(int modeRGB, int modeAlpha) {
			if      (Delegates.pglBlendEquationSeparateEXT != null)
				Delegates.pglBlendEquationSeparateEXT(modeRGB, modeAlpha);
			else
				throw new InvalidOperationException("binding point BlendEquationSeparateEXT cannot be found");
			LogProc("glBlendEquationSeparateEXT({0}, {1})", modeRGB, modeAlpha);
		}

		/// <summary>
		/// Binding for glBlendFuncSeparateEXT function.
		/// </summary>
		/// <param name="sfactorRGB">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dfactorRGB">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="sfactorAlpha">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dfactorAlpha">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void BlendFuncSeparateEXT(int sfactorRGB, int dfactorRGB, int sfactorAlpha, int dfactorAlpha) {
			if      (Delegates.pglBlendFuncSeparateEXT != null)
				Delegates.pglBlendFuncSeparateEXT(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
			else
				throw new InvalidOperationException("binding point BlendFuncSeparateEXT cannot be found");
			LogProc("glBlendFuncSeparateEXT({0}, {1}, {2}, {3})", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
		}

		/// <summary>
		/// Binding for glBlitFramebufferEXT function.
		/// </summary>
		/// <param name="srcX0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="srcY0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="srcX1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="srcY1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dstX0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dstY0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dstX1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dstY1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="mask">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="filter">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void BlitFramebufferEXT(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, int filter) {
			if      (Delegates.pglBlitFramebufferEXT != null)
				Delegates.pglBlitFramebufferEXT(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
			else
				throw new InvalidOperationException("binding point BlitFramebufferEXT cannot be found");
			LogProc("glBlitFramebufferEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9})", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
		}

		/// <summary>
		/// Binding for glCheckFramebufferStatusEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static int CheckFramebufferStatusEXT(int target) {
			int retvalue;
			if      (Delegates.pglCheckFramebufferStatusEXT != null)
				retvalue = (Delegates.pglCheckFramebufferStatusEXT(target));
			else
				throw new InvalidOperationException("binding point CheckFramebufferStatusEXT cannot be found");
			LogProc("glCheckFramebufferStatusEXT({0}) = {1}", target, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glCheckNamedFramebufferStatusEXT function.
		/// </summary>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static int CheckNamedFramebufferStatusEXT(UInt32 framebuffer, int target) {
			int retvalue;
			if      (Delegates.pglCheckNamedFramebufferStatusEXT != null)
				retvalue = (Delegates.pglCheckNamedFramebufferStatusEXT(framebuffer, target));
			else
				throw new InvalidOperationException("binding point CheckNamedFramebufferStatusEXT cannot be found");
			LogProc("glCheckNamedFramebufferStatusEXT({0}, {1}) = {2}", framebuffer, target, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glClearColorIiEXT function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="alpha">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void ClearColorIEXT(int red, int green, int blue, int alpha) {
			if      (Delegates.pglClearColorIiEXT != null)
				Delegates.pglClearColorIiEXT(red, green, blue, alpha);
			else
				throw new InvalidOperationException("binding point ClearColorIEXT cannot be found");
			LogProc("glClearColorIiEXT({0}, {1}, {2}, {3})", red, green, blue, alpha);
		}

		/// <summary>
		/// Binding for glClearColorIuiEXT function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="alpha">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void ClearColorIEXT(UInt32 red, UInt32 green, UInt32 blue, UInt32 alpha) {
			if      (Delegates.pglClearColorIuiEXT != null)
				Delegates.pglClearColorIuiEXT(red, green, blue, alpha);
			else
				throw new InvalidOperationException("binding point ClearColorIEXT cannot be found");
			LogProc("glClearColorIuiEXT({0}, {1}, {2}, {3})", red, green, blue, alpha);
		}

		/// <summary>
		/// Binding for glClientAttribDefaultEXT function.
		/// </summary>
		/// <param name="mask">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void ClientAttribDefaultEXT(uint mask) {
			if      (Delegates.pglClientAttribDefaultEXT != null)
				Delegates.pglClientAttribDefaultEXT(mask);
			else
				throw new InvalidOperationException("binding point ClientAttribDefaultEXT cannot be found");
			LogProc("glClientAttribDefaultEXT({0})", mask);
		}

		/// <summary>
		/// Binding for glColorMaskIndexedEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="g">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="b">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="a">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void ColorMaskIndexedEXT(UInt32 index, bool r, bool g, bool b, bool a) {
			if      (Delegates.pglColorMaskIndexedEXT != null)
				Delegates.pglColorMaskIndexedEXT(index, r, g, b, a);
			else
				throw new InvalidOperationException("binding point ColorMaskIndexedEXT cannot be found");
			LogProc("glColorMaskIndexedEXT({0}, {1}, {2}, {3}, {4})", index, r, g, b, a);
		}

		/// <summary>
		/// Binding for glColorPointerEXT function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void ColorPointerEXT(int size, int type, Int32 stride, Int32 count, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglColorPointerEXT != null)
					Delegates.pglColorPointerEXT(size, type, stride, count, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point ColorPointerEXT cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glColorPointerEXT({0}, {1}, {2}, {3}, {4})", size, type, stride, count, pointer);
		}

		/// <summary>
		/// Binding for glColorSubTableEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="start">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ColorSubTableEXT(int target, Int32 start, Int32 count, int format, int type, object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglColorSubTableEXT != null)
					Delegates.pglColorSubTableEXT(target, start, count, format, type, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point ColorSubTableEXT cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glColorSubTableEXT({0}, {1}, {2}, {3}, {4}, {5})", target, start, count, format, type, data);
		}

		/// <summary>
		/// Binding for glColorTableEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalFormat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="table">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void ColorTableEXT(int target, int internalFormat, Int32 width, int format, int type, object table) {
			GCHandle pp_table = GCHandle.Alloc(table, GCHandleType.Pinned);
			try {
				if      (Delegates.pglColorTableEXT != null)
					Delegates.pglColorTableEXT(target, internalFormat, width, format, type, pp_table.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point ColorTableEXT cannot be found");
			} finally {
				pp_table.Free();
			}
			LogProc("glColorTableEXT({0}, {1}, {2}, {3}, {4}, {5})", target, internalFormat, width, format, type, table);
		}

		/// <summary>
		/// Binding for glCompressedMultiTexImage1DEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bits">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void CompressedMultiTexImage1DEXT(int texunit, int target, int level, int internalformat, Int32 width, int border, Int32 imageSize, object bits) {
			GCHandle pp_bits = GCHandle.Alloc(bits, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedMultiTexImage1DEXT != null)
					Delegates.pglCompressedMultiTexImage1DEXT(texunit, target, level, internalformat, width, border, imageSize, pp_bits.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedMultiTexImage1DEXT cannot be found");
			} finally {
				pp_bits.Free();
			}
			LogProc("glCompressedMultiTexImage1DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", texunit, target, level, internalformat, width, border, imageSize, bits);
		}

		/// <summary>
		/// Binding for glCompressedMultiTexImage2DEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bits">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void CompressedMultiTexImage2DEXT(int texunit, int target, int level, int internalformat, Int32 width, Int32 height, int border, Int32 imageSize, object bits) {
			GCHandle pp_bits = GCHandle.Alloc(bits, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedMultiTexImage2DEXT != null)
					Delegates.pglCompressedMultiTexImage2DEXT(texunit, target, level, internalformat, width, height, border, imageSize, pp_bits.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedMultiTexImage2DEXT cannot be found");
			} finally {
				pp_bits.Free();
			}
			LogProc("glCompressedMultiTexImage2DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", texunit, target, level, internalformat, width, height, border, imageSize, bits);
		}

		/// <summary>
		/// Binding for glCompressedMultiTexImage3DEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bits">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void CompressedMultiTexImage3DEXT(int texunit, int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, Int32 imageSize, object bits) {
			GCHandle pp_bits = GCHandle.Alloc(bits, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedMultiTexImage3DEXT != null)
					Delegates.pglCompressedMultiTexImage3DEXT(texunit, target, level, internalformat, width, height, depth, border, imageSize, pp_bits.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedMultiTexImage3DEXT cannot be found");
			} finally {
				pp_bits.Free();
			}
			LogProc("glCompressedMultiTexImage3DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9})", texunit, target, level, internalformat, width, height, depth, border, imageSize, bits);
		}

		/// <summary>
		/// Binding for glCompressedMultiTexSubImage1DEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bits">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void CompressedMultiTexSubImage1DEXT(int texunit, int target, int level, int xoffset, Int32 width, int format, Int32 imageSize, object bits) {
			GCHandle pp_bits = GCHandle.Alloc(bits, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedMultiTexSubImage1DEXT != null)
					Delegates.pglCompressedMultiTexSubImage1DEXT(texunit, target, level, xoffset, width, format, imageSize, pp_bits.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedMultiTexSubImage1DEXT cannot be found");
			} finally {
				pp_bits.Free();
			}
			LogProc("glCompressedMultiTexSubImage1DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", texunit, target, level, xoffset, width, format, imageSize, bits);
		}

		/// <summary>
		/// Binding for glCompressedMultiTexSubImage2DEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bits">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void CompressedMultiTexSubImage2DEXT(int texunit, int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, Int32 imageSize, object bits) {
			GCHandle pp_bits = GCHandle.Alloc(bits, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedMultiTexSubImage2DEXT != null)
					Delegates.pglCompressedMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, imageSize, pp_bits.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedMultiTexSubImage2DEXT cannot be found");
			} finally {
				pp_bits.Free();
			}
			LogProc("glCompressedMultiTexSubImage2DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9})", texunit, target, level, xoffset, yoffset, width, height, format, imageSize, bits);
		}

		/// <summary>
		/// Binding for glCompressedMultiTexSubImage3DEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="zoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bits">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void CompressedMultiTexSubImage3DEXT(int texunit, int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, Int32 imageSize, object bits) {
			GCHandle pp_bits = GCHandle.Alloc(bits, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedMultiTexSubImage3DEXT != null)
					Delegates.pglCompressedMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, pp_bits.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedMultiTexSubImage3DEXT cannot be found");
			} finally {
				pp_bits.Free();
			}
			LogProc("glCompressedMultiTexSubImage3DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits);
		}

		/// <summary>
		/// Binding for glCompressedTextureImage1DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bits">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void CompressedTextureImage1DEXT(UInt32 texture, int target, int level, int internalformat, Int32 width, int border, Int32 imageSize, object bits) {
			GCHandle pp_bits = GCHandle.Alloc(bits, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedTextureImage1DEXT != null)
					Delegates.pglCompressedTextureImage1DEXT(texture, target, level, internalformat, width, border, imageSize, pp_bits.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedTextureImage1DEXT cannot be found");
			} finally {
				pp_bits.Free();
			}
			LogProc("glCompressedTextureImage1DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", texture, target, level, internalformat, width, border, imageSize, bits);
		}

		/// <summary>
		/// Binding for glCompressedTextureImage2DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bits">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void CompressedTextureImage2DEXT(UInt32 texture, int target, int level, int internalformat, Int32 width, Int32 height, int border, Int32 imageSize, object bits) {
			GCHandle pp_bits = GCHandle.Alloc(bits, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedTextureImage2DEXT != null)
					Delegates.pglCompressedTextureImage2DEXT(texture, target, level, internalformat, width, height, border, imageSize, pp_bits.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedTextureImage2DEXT cannot be found");
			} finally {
				pp_bits.Free();
			}
			LogProc("glCompressedTextureImage2DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", texture, target, level, internalformat, width, height, border, imageSize, bits);
		}

		/// <summary>
		/// Binding for glCompressedTextureImage3DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bits">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void CompressedTextureImage3DEXT(UInt32 texture, int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, Int32 imageSize, object bits) {
			GCHandle pp_bits = GCHandle.Alloc(bits, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedTextureImage3DEXT != null)
					Delegates.pglCompressedTextureImage3DEXT(texture, target, level, internalformat, width, height, depth, border, imageSize, pp_bits.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedTextureImage3DEXT cannot be found");
			} finally {
				pp_bits.Free();
			}
			LogProc("glCompressedTextureImage3DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9})", texture, target, level, internalformat, width, height, depth, border, imageSize, bits);
		}

		/// <summary>
		/// Binding for glCompressedTextureSubImage1DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bits">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void CompressedTextureSubImage1DEXT(UInt32 texture, int target, int level, int xoffset, Int32 width, int format, Int32 imageSize, object bits) {
			GCHandle pp_bits = GCHandle.Alloc(bits, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedTextureSubImage1DEXT != null)
					Delegates.pglCompressedTextureSubImage1DEXT(texture, target, level, xoffset, width, format, imageSize, pp_bits.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedTextureSubImage1DEXT cannot be found");
			} finally {
				pp_bits.Free();
			}
			LogProc("glCompressedTextureSubImage1DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", texture, target, level, xoffset, width, format, imageSize, bits);
		}

		/// <summary>
		/// Binding for glCompressedTextureSubImage2DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bits">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void CompressedTextureSubImage2DEXT(UInt32 texture, int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, Int32 imageSize, object bits) {
			GCHandle pp_bits = GCHandle.Alloc(bits, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedTextureSubImage2DEXT != null)
					Delegates.pglCompressedTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, imageSize, pp_bits.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedTextureSubImage2DEXT cannot be found");
			} finally {
				pp_bits.Free();
			}
			LogProc("glCompressedTextureSubImage2DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9})", texture, target, level, xoffset, yoffset, width, height, format, imageSize, bits);
		}

		/// <summary>
		/// Binding for glCompressedTextureSubImage3DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="zoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bits">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void CompressedTextureSubImage3DEXT(UInt32 texture, int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, Int32 imageSize, object bits) {
			GCHandle pp_bits = GCHandle.Alloc(bits, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedTextureSubImage3DEXT != null)
					Delegates.pglCompressedTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, pp_bits.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedTextureSubImage3DEXT cannot be found");
			} finally {
				pp_bits.Free();
			}
			LogProc("glCompressedTextureSubImage3DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits);
		}

		/// <summary>
		/// Binding for glConvolutionFilter1DEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="image">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void ConvolutionFilter1DEXT(int target, int internalformat, Int32 width, int format, int type, object image) {
			GCHandle pp_image = GCHandle.Alloc(image, GCHandleType.Pinned);
			try {
				if      (Delegates.pglConvolutionFilter1DEXT != null)
					Delegates.pglConvolutionFilter1DEXT(target, internalformat, width, format, type, pp_image.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point ConvolutionFilter1DEXT cannot be found");
			} finally {
				pp_image.Free();
			}
			LogProc("glConvolutionFilter1DEXT({0}, {1}, {2}, {3}, {4}, {5})", target, internalformat, width, format, type, image);
		}

		/// <summary>
		/// Binding for glConvolutionFilter2DEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="image">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void ConvolutionFilter2DEXT(int target, int internalformat, Int32 width, Int32 height, int format, int type, object image) {
			GCHandle pp_image = GCHandle.Alloc(image, GCHandleType.Pinned);
			try {
				if      (Delegates.pglConvolutionFilter2DEXT != null)
					Delegates.pglConvolutionFilter2DEXT(target, internalformat, width, height, format, type, pp_image.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point ConvolutionFilter2DEXT cannot be found");
			} finally {
				pp_image.Free();
			}
			LogProc("glConvolutionFilter2DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6})", target, internalformat, width, height, format, type, image);
		}

		/// <summary>
		/// Binding for glConvolutionParameterfEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void ConvolutionParameterEXT(int target, int pname, float @params) {
			if      (Delegates.pglConvolutionParameterfEXT != null)
				Delegates.pglConvolutionParameterfEXT(target, pname, @params);
			else
				throw new InvalidOperationException("binding point ConvolutionParameterEXT cannot be found");
			LogProc("glConvolutionParameterfEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glConvolutionParameterfvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void ConvolutionParameterEXT(int target, int pname, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglConvolutionParameterfvEXT != null)
						Delegates.pglConvolutionParameterfvEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point ConvolutionParameterEXT cannot be found");
				}
			}
			LogProc("glConvolutionParameterfvEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glConvolutionParameteriEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void ConvolutionParameterEXT(int target, int pname, int @params) {
			if      (Delegates.pglConvolutionParameteriEXT != null)
				Delegates.pglConvolutionParameteriEXT(target, pname, @params);
			else
				throw new InvalidOperationException("binding point ConvolutionParameterEXT cannot be found");
			LogProc("glConvolutionParameteriEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glConvolutionParameterivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void ConvolutionParameterEXT(int target, int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglConvolutionParameterivEXT != null)
						Delegates.pglConvolutionParameterivEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point ConvolutionParameterEXT cannot be found");
				}
			}
			LogProc("glConvolutionParameterivEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glCopyColorSubTableEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="start">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void CopyColorSubTableEXT(int target, Int32 start, int x, int y, Int32 width) {
			if      (Delegates.pglCopyColorSubTableEXT != null)
				Delegates.pglCopyColorSubTableEXT(target, start, x, y, width);
			else
				throw new InvalidOperationException("binding point CopyColorSubTableEXT cannot be found");
			LogProc("glCopyColorSubTableEXT({0}, {1}, {2}, {3}, {4})", target, start, x, y, width);
		}

		/// <summary>
		/// Binding for glCopyConvolutionFilter1DEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void CopyConvolutionFilter1DEXT(int target, int internalformat, int x, int y, Int32 width) {
			if      (Delegates.pglCopyConvolutionFilter1DEXT != null)
				Delegates.pglCopyConvolutionFilter1DEXT(target, internalformat, x, y, width);
			else
				throw new InvalidOperationException("binding point CopyConvolutionFilter1DEXT cannot be found");
			LogProc("glCopyConvolutionFilter1DEXT({0}, {1}, {2}, {3}, {4})", target, internalformat, x, y, width);
		}

		/// <summary>
		/// Binding for glCopyConvolutionFilter2DEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void CopyConvolutionFilter2DEXT(int target, int internalformat, int x, int y, Int32 width, Int32 height) {
			if      (Delegates.pglCopyConvolutionFilter2DEXT != null)
				Delegates.pglCopyConvolutionFilter2DEXT(target, internalformat, x, y, width, height);
			else
				throw new InvalidOperationException("binding point CopyConvolutionFilter2DEXT cannot be found");
			LogProc("glCopyConvolutionFilter2DEXT({0}, {1}, {2}, {3}, {4}, {5})", target, internalformat, x, y, width, height);
		}

		/// <summary>
		/// Binding for glCopyMultiTexImage1DEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void CopyMultiTexImage1DEXT(int texunit, int target, int level, int internalformat, int x, int y, Int32 width, int border) {
			if      (Delegates.pglCopyMultiTexImage1DEXT != null)
				Delegates.pglCopyMultiTexImage1DEXT(texunit, target, level, internalformat, x, y, width, border);
			else
				throw new InvalidOperationException("binding point CopyMultiTexImage1DEXT cannot be found");
			LogProc("glCopyMultiTexImage1DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", texunit, target, level, internalformat, x, y, width, border);
		}

		/// <summary>
		/// Binding for glCopyMultiTexImage2DEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void CopyMultiTexImage2DEXT(int texunit, int target, int level, int internalformat, int x, int y, Int32 width, Int32 height, int border) {
			if      (Delegates.pglCopyMultiTexImage2DEXT != null)
				Delegates.pglCopyMultiTexImage2DEXT(texunit, target, level, internalformat, x, y, width, height, border);
			else
				throw new InvalidOperationException("binding point CopyMultiTexImage2DEXT cannot be found");
			LogProc("glCopyMultiTexImage2DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", texunit, target, level, internalformat, x, y, width, height, border);
		}

		/// <summary>
		/// Binding for glCopyMultiTexSubImage1DEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void CopyMultiTexSubImage1DEXT(int texunit, int target, int level, int xoffset, int x, int y, Int32 width) {
			if      (Delegates.pglCopyMultiTexSubImage1DEXT != null)
				Delegates.pglCopyMultiTexSubImage1DEXT(texunit, target, level, xoffset, x, y, width);
			else
				throw new InvalidOperationException("binding point CopyMultiTexSubImage1DEXT cannot be found");
			LogProc("glCopyMultiTexSubImage1DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6})", texunit, target, level, xoffset, x, y, width);
		}

		/// <summary>
		/// Binding for glCopyMultiTexSubImage2DEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void CopyMultiTexSubImage2DEXT(int texunit, int target, int level, int xoffset, int yoffset, int x, int y, Int32 width, Int32 height) {
			if      (Delegates.pglCopyMultiTexSubImage2DEXT != null)
				Delegates.pglCopyMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, x, y, width, height);
			else
				throw new InvalidOperationException("binding point CopyMultiTexSubImage2DEXT cannot be found");
			LogProc("glCopyMultiTexSubImage2DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", texunit, target, level, xoffset, yoffset, x, y, width, height);
		}

		/// <summary>
		/// Binding for glCopyMultiTexSubImage3DEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="zoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void CopyMultiTexSubImage3DEXT(int texunit, int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, Int32 width, Int32 height) {
			if      (Delegates.pglCopyMultiTexSubImage3DEXT != null)
				Delegates.pglCopyMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, x, y, width, height);
			else
				throw new InvalidOperationException("binding point CopyMultiTexSubImage3DEXT cannot be found");
			LogProc("glCopyMultiTexSubImage3DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9})", texunit, target, level, xoffset, yoffset, zoffset, x, y, width, height);
		}

		/// <summary>
		/// Binding for glCopyTexImage1DEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void CopyTexImage1DEXT(int target, int level, int internalformat, int x, int y, Int32 width, int border) {
			if      (Delegates.pglCopyTexImage1DEXT != null)
				Delegates.pglCopyTexImage1DEXT(target, level, internalformat, x, y, width, border);
			else
				throw new InvalidOperationException("binding point CopyTexImage1DEXT cannot be found");
			LogProc("glCopyTexImage1DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6})", target, level, internalformat, x, y, width, border);
		}

		/// <summary>
		/// Binding for glCopyTexImage2DEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void CopyTexImage2DEXT(int target, int level, int internalformat, int x, int y, Int32 width, Int32 height, int border) {
			if      (Delegates.pglCopyTexImage2DEXT != null)
				Delegates.pglCopyTexImage2DEXT(target, level, internalformat, x, y, width, height, border);
			else
				throw new InvalidOperationException("binding point CopyTexImage2DEXT cannot be found");
			LogProc("glCopyTexImage2DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", target, level, internalformat, x, y, width, height, border);
		}

		/// <summary>
		/// Binding for glCopyTexSubImage1DEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void CopyTexSubImage1DEXT(int target, int level, int xoffset, int x, int y, Int32 width) {
			if      (Delegates.pglCopyTexSubImage1DEXT != null)
				Delegates.pglCopyTexSubImage1DEXT(target, level, xoffset, x, y, width);
			else
				throw new InvalidOperationException("binding point CopyTexSubImage1DEXT cannot be found");
			LogProc("glCopyTexSubImage1DEXT({0}, {1}, {2}, {3}, {4}, {5})", target, level, xoffset, x, y, width);
		}

		/// <summary>
		/// Binding for glCopyTexSubImage2DEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void CopyTexSubImage2DEXT(int target, int level, int xoffset, int yoffset, int x, int y, Int32 width, Int32 height) {
			if      (Delegates.pglCopyTexSubImage2DEXT != null)
				Delegates.pglCopyTexSubImage2DEXT(target, level, xoffset, yoffset, x, y, width, height);
			else
				throw new InvalidOperationException("binding point CopyTexSubImage2DEXT cannot be found");
			LogProc("glCopyTexSubImage2DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", target, level, xoffset, yoffset, x, y, width, height);
		}

		/// <summary>
		/// Binding for glCopyTexSubImage3DEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="zoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void CopyTexSubImage3DEXT(int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, Int32 width, Int32 height) {
			if      (Delegates.pglCopyTexSubImage3DEXT != null)
				Delegates.pglCopyTexSubImage3DEXT(target, level, xoffset, yoffset, zoffset, x, y, width, height);
			else
				throw new InvalidOperationException("binding point CopyTexSubImage3DEXT cannot be found");
			LogProc("glCopyTexSubImage3DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", target, level, xoffset, yoffset, zoffset, x, y, width, height);
		}

		/// <summary>
		/// Binding for glCopyTextureImage1DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void CopyTextureImage1DEXT(UInt32 texture, int target, int level, int internalformat, int x, int y, Int32 width, int border) {
			if      (Delegates.pglCopyTextureImage1DEXT != null)
				Delegates.pglCopyTextureImage1DEXT(texture, target, level, internalformat, x, y, width, border);
			else
				throw new InvalidOperationException("binding point CopyTextureImage1DEXT cannot be found");
			LogProc("glCopyTextureImage1DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", texture, target, level, internalformat, x, y, width, border);
		}

		/// <summary>
		/// Binding for glCopyTextureImage2DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void CopyTextureImage2DEXT(UInt32 texture, int target, int level, int internalformat, int x, int y, Int32 width, Int32 height, int border) {
			if      (Delegates.pglCopyTextureImage2DEXT != null)
				Delegates.pglCopyTextureImage2DEXT(texture, target, level, internalformat, x, y, width, height, border);
			else
				throw new InvalidOperationException("binding point CopyTextureImage2DEXT cannot be found");
			LogProc("glCopyTextureImage2DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", texture, target, level, internalformat, x, y, width, height, border);
		}

		/// <summary>
		/// Binding for glCopyTextureSubImage1DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void CopyTextureSubImage1DEXT(UInt32 texture, int target, int level, int xoffset, int x, int y, Int32 width) {
			if      (Delegates.pglCopyTextureSubImage1DEXT != null)
				Delegates.pglCopyTextureSubImage1DEXT(texture, target, level, xoffset, x, y, width);
			else
				throw new InvalidOperationException("binding point CopyTextureSubImage1DEXT cannot be found");
			LogProc("glCopyTextureSubImage1DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6})", texture, target, level, xoffset, x, y, width);
		}

		/// <summary>
		/// Binding for glCopyTextureSubImage2DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void CopyTextureSubImage2DEXT(UInt32 texture, int target, int level, int xoffset, int yoffset, int x, int y, Int32 width, Int32 height) {
			if      (Delegates.pglCopyTextureSubImage2DEXT != null)
				Delegates.pglCopyTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, x, y, width, height);
			else
				throw new InvalidOperationException("binding point CopyTextureSubImage2DEXT cannot be found");
			LogProc("glCopyTextureSubImage2DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", texture, target, level, xoffset, yoffset, x, y, width, height);
		}

		/// <summary>
		/// Binding for glCopyTextureSubImage3DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="zoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void CopyTextureSubImage3DEXT(UInt32 texture, int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, Int32 width, Int32 height) {
			if      (Delegates.pglCopyTextureSubImage3DEXT != null)
				Delegates.pglCopyTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, x, y, width, height);
			else
				throw new InvalidOperationException("binding point CopyTextureSubImage3DEXT cannot be found");
			LogProc("glCopyTextureSubImage3DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9})", texture, target, level, xoffset, yoffset, zoffset, x, y, width, height);
		}

		/// <summary>
		/// Binding for glCreateShaderProgramEXT function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="string">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static UInt32 CreateShaderProgramEXT(int type, string @string) {
			UInt32 retvalue;
			if      (Delegates.pglCreateShaderProgramEXT != null)
				retvalue = (Delegates.pglCreateShaderProgramEXT(type, @string));
			else
				throw new InvalidOperationException("binding point CreateShaderProgramEXT cannot be found");
			LogProc("glCreateShaderProgramEXT({0}, {1}) = {2}", type, @string, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glCullParameterdvEXT function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 4 element(s).
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void CullParameterEXT(int pname, [Out] double[] @params) {
			unsafe {
				fixed (double* fp_params = @params)
				{
					if      (Delegates.pglCullParameterdvEXT != null)
						Delegates.pglCullParameterdvEXT(pname, fp_params);
					else
						throw new InvalidOperationException("binding point CullParameterEXT cannot be found");
				}
			}
			LogProc("glCullParameterdvEXT({0}, {1})", pname, @params);
		}

		/// <summary>
		/// Binding for glCullParameterdvEXT function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void CullParameterEXT(int pname, double* @params) {
			unsafe {
				if      (Delegates.pglCullParameterdvEXT != null)
					Delegates.pglCullParameterdvEXT(pname, @params);
				else
					throw new InvalidOperationException("binding point CullParameterEXT cannot be found");
			}
			LogProc("glCullParameterdvEXT({0}, {1})", pname, "@params");
		}
		

		/// <summary>
		/// Binding for glCullParameterfvEXT function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 4 element(s).
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void CullParameterEXT(int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglCullParameterfvEXT != null)
						Delegates.pglCullParameterfvEXT(pname, fp_params);
					else
						throw new InvalidOperationException("binding point CullParameterEXT cannot be found");
				}
			}
			LogProc("glCullParameterfvEXT({0}, {1})", pname, @params);
		}

		/// <summary>
		/// Binding for glCullParameterfvEXT function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void CullParameterEXT(int pname, float* @params) {
			unsafe {
				if      (Delegates.pglCullParameterfvEXT != null)
					Delegates.pglCullParameterfvEXT(pname, @params);
				else
					throw new InvalidOperationException("binding point CullParameterEXT cannot be found");
			}
			LogProc("glCullParameterfvEXT({0}, {1})", pname, "@params");
		}
		

		/// <summary>
		/// Binding for glDeleteFramebuffersEXT function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="framebuffers">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DeleteFramebuffersEXT(Int32 n, UInt32[] framebuffers) {
			unsafe {
				fixed (UInt32* fp_framebuffers = framebuffers)
				{
					if      (Delegates.pglDeleteFramebuffersEXT != null)
						Delegates.pglDeleteFramebuffersEXT(n, fp_framebuffers);
					else
						throw new InvalidOperationException("binding point DeleteFramebuffersEXT cannot be found");
				}
			}
			LogProc("glDeleteFramebuffersEXT({0}, {1})", n, framebuffers);
		}

		/// <summary>
		/// Binding for glDeleteFramebuffersEXT function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="framebuffers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DeleteFramebuffersEXT(Int32 n, UInt32* framebuffers) {
			unsafe {
				if      (Delegates.pglDeleteFramebuffersEXT != null)
					Delegates.pglDeleteFramebuffersEXT(n, framebuffers);
				else
					throw new InvalidOperationException("binding point DeleteFramebuffersEXT cannot be found");
			}
			LogProc("glDeleteFramebuffersEXT({0}, {1})", n, "framebuffers");
		}
		

		/// <summary>
		/// Binding for glDeleteRenderbuffersEXT function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffers">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DeleteRenderbufferEXT(Int32 n, UInt32[] renderbuffers) {
			unsafe {
				fixed (UInt32* fp_renderbuffers = renderbuffers)
				{
					if      (Delegates.pglDeleteRenderbuffersEXT != null)
						Delegates.pglDeleteRenderbuffersEXT(n, fp_renderbuffers);
					else
						throw new InvalidOperationException("binding point DeleteRenderbufferEXT cannot be found");
				}
			}
			LogProc("glDeleteRenderbuffersEXT({0}, {1})", n, renderbuffers);
		}

		/// <summary>
		/// Binding for glDeleteRenderbuffersEXT function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DeleteRenderbufferEXT(Int32 n, UInt32* renderbuffers) {
			unsafe {
				if      (Delegates.pglDeleteRenderbuffersEXT != null)
					Delegates.pglDeleteRenderbuffersEXT(n, renderbuffers);
				else
					throw new InvalidOperationException("binding point DeleteRenderbufferEXT cannot be found");
			}
			LogProc("glDeleteRenderbuffersEXT({0}, {1})", n, "renderbuffers");
		}
		

		/// <summary>
		/// Binding for glDeleteTexturesEXT function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textures">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void DeleteTexturesEXT(Int32 n, UInt32[] textures) {
			unsafe {
				fixed (UInt32* fp_textures = textures)
				{
					if      (Delegates.pglDeleteTexturesEXT != null)
						Delegates.pglDeleteTexturesEXT(n, fp_textures);
					else
						throw new InvalidOperationException("binding point DeleteTexturesEXT cannot be found");
				}
			}
			LogProc("glDeleteTexturesEXT({0}, {1})", n, textures);
		}

		/// <summary>
		/// Binding for glDeleteVertexShaderEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DeleteVertexShaderEXT(UInt32 id) {
			if      (Delegates.pglDeleteVertexShaderEXT != null)
				Delegates.pglDeleteVertexShaderEXT(id);
			else
				throw new InvalidOperationException("binding point DeleteVertexShaderEXT cannot be found");
			LogProc("glDeleteVertexShaderEXT({0})", id);
		}

		/// <summary>
		/// Binding for glDepthBoundsEXT function.
		/// </summary>
		/// <param name="zmin">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="zmax">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DepthBoundsEXT(double zmin, double zmax) {
			if      (Delegates.pglDepthBoundsEXT != null)
				Delegates.pglDepthBoundsEXT(zmin, zmax);
			else
				throw new InvalidOperationException("binding point DepthBoundsEXT cannot be found");
			LogProc("glDepthBoundsEXT({0}, {1})", zmin, zmax);
		}

		/// <summary>
		/// Binding for glDisableClientStateIndexedEXT function.
		/// </summary>
		/// <param name="array">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void DisableClientStateIndexedEXT(int array, UInt32 index) {
			if      (Delegates.pglDisableClientStateIndexedEXT != null)
				Delegates.pglDisableClientStateIndexedEXT(array, index);
			else
				throw new InvalidOperationException("binding point DisableClientStateIndexedEXT cannot be found");
			LogProc("glDisableClientStateIndexedEXT({0}, {1})", array, index);
		}

		/// <summary>
		/// Binding for glDisableIndexedEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void DisableIndexedEXT(int target, UInt32 index) {
			if      (Delegates.pglDisableIndexedEXT != null)
				Delegates.pglDisableIndexedEXT(target, index);
			else
				throw new InvalidOperationException("binding point DisableIndexedEXT cannot be found");
			LogProc("glDisableIndexedEXT({0}, {1})", target, index);
		}

		/// <summary>
		/// Binding for glDisableVariantClientStateEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DisableVariantClientStateEXT(UInt32 id) {
			if      (Delegates.pglDisableVariantClientStateEXT != null)
				Delegates.pglDisableVariantClientStateEXT(id);
			else
				throw new InvalidOperationException("binding point DisableVariantClientStateEXT cannot be found");
			LogProc("glDisableVariantClientStateEXT({0})", id);
		}

		/// <summary>
		/// Binding for glDrawArraysEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="first">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void DrawArraysEXT(int mode, int first, Int32 count) {
			if      (Delegates.pglDrawArraysEXT != null)
				Delegates.pglDrawArraysEXT(mode, first, count);
			else
				throw new InvalidOperationException("binding point DrawArraysEXT cannot be found");
			LogProc("glDrawArraysEXT({0}, {1}, {2})", mode, first, count);
		}

		/// <summary>
		/// Binding for glDrawArraysInstancedEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="start">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void DrawArraysInstancedEXT(int mode, int start, Int32 count, Int32 primcount) {
			if      (Delegates.pglDrawArraysInstancedEXT != null)
				Delegates.pglDrawArraysInstancedEXT(mode, start, count, primcount);
			else
				throw new InvalidOperationException("binding point DrawArraysInstancedEXT cannot be found");
			LogProc("glDrawArraysInstancedEXT({0}, {1}, {2}, {3})", mode, start, count, primcount);
		}

		/// <summary>
		/// Binding for glDrawElementsInstancedEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void DrawElementsInstancedEXT(int mode, Int32 count, int type, object indices, Int32 primcount) {
			GCHandle pp_indices = GCHandle.Alloc(indices, GCHandleType.Pinned);
			try {
				if      (Delegates.pglDrawElementsInstancedEXT != null)
					Delegates.pglDrawElementsInstancedEXT(mode, count, type, pp_indices.AddrOfPinnedObject(), primcount);
				else
					throw new InvalidOperationException("binding point DrawElementsInstancedEXT cannot be found");
			} finally {
				pp_indices.Free();
			}
			LogProc("glDrawElementsInstancedEXT({0}, {1}, {2}, {3}, {4})", mode, count, type, indices, primcount);
		}

		/// <summary>
		/// Binding for glDrawRangeElementsEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="start">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="end">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void DrawRangeElementsEXT(int mode, UInt32 start, UInt32 end, Int32 count, int type, object indices) {
			GCHandle pp_indices = GCHandle.Alloc(indices, GCHandleType.Pinned);
			try {
				if      (Delegates.pglDrawRangeElementsEXT != null)
					Delegates.pglDrawRangeElementsEXT(mode, start, end, count, type, pp_indices.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point DrawRangeElementsEXT cannot be found");
			} finally {
				pp_indices.Free();
			}
			LogProc("glDrawRangeElementsEXT({0}, {1}, {2}, {3}, {4}, {5})", mode, start, end, count, type, indices);
		}

		/// <summary>
		/// Binding for glEdgeFlagPointerEXT function.
		/// </summary>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.Boolean*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void EdgeFlagPointerEXT(Int32 stride, Int32 count, bool[] pointer) {
			unsafe {
				fixed (bool* fp_pointer = pointer)
				{
					if      (Delegates.pglEdgeFlagPointerEXT != null)
						Delegates.pglEdgeFlagPointerEXT(stride, count, fp_pointer);
					else
						throw new InvalidOperationException("binding point EdgeFlagPointerEXT cannot be found");
				}
			}
			LogProc("glEdgeFlagPointerEXT({0}, {1}, {2})", stride, count, pointer);
		}

		/// <summary>
		/// Binding for glEnableClientStateIndexedEXT function.
		/// </summary>
		/// <param name="array">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void EnableClientStateIndexedEXT(int array, UInt32 index) {
			if      (Delegates.pglEnableClientStateIndexedEXT != null)
				Delegates.pglEnableClientStateIndexedEXT(array, index);
			else
				throw new InvalidOperationException("binding point EnableClientStateIndexedEXT cannot be found");
			LogProc("glEnableClientStateIndexedEXT({0}, {1})", array, index);
		}

		/// <summary>
		/// Binding for glEnableIndexedEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void EnableIndexedEXT(int target, UInt32 index) {
			if      (Delegates.pglEnableIndexedEXT != null)
				Delegates.pglEnableIndexedEXT(target, index);
			else
				throw new InvalidOperationException("binding point EnableIndexedEXT cannot be found");
			LogProc("glEnableIndexedEXT({0}, {1})", target, index);
		}

		/// <summary>
		/// Binding for glEnableVariantClientStateEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void EnableVariantClientStateEXT(UInt32 id) {
			if      (Delegates.pglEnableVariantClientStateEXT != null)
				Delegates.pglEnableVariantClientStateEXT(id);
			else
				throw new InvalidOperationException("binding point EnableVariantClientStateEXT cannot be found");
			LogProc("glEnableVariantClientStateEXT({0})", id);
		}

		/// <summary>
		/// Binding for glEndTransformFeedbackEXT function.
		/// </summary>
		/// @note This routine is available from OpenGL 2.0
		public static void EndTransformFeedbackEXT() {
			if      (Delegates.pglEndTransformFeedbackEXT != null)
				Delegates.pglEndTransformFeedbackEXT();
			else
				throw new InvalidOperationException("binding point EndTransformFeedbackEXT cannot be found");
			LogProc("glEndTransformFeedbackEXT()");
		}

		/// <summary>
		/// Binding for glEndVertexShaderEXT function.
		/// </summary>
		/// @note This routine is available from OpenGL 1.2
		public static void EndVertexShaderEXT() {
			if      (Delegates.pglEndVertexShaderEXT != null)
				Delegates.pglEndVertexShaderEXT();
			else
				throw new InvalidOperationException("binding point EndVertexShaderEXT cannot be found");
			LogProc("glEndVertexShaderEXT()");
		}

		/// <summary>
		/// Binding for glExtractComponentEXT function.
		/// </summary>
		/// <param name="res">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="src">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="num">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ExtractComponentEXT(UInt32 res, UInt32 src, UInt32 num) {
			if      (Delegates.pglExtractComponentEXT != null)
				Delegates.pglExtractComponentEXT(res, src, num);
			else
				throw new InvalidOperationException("binding point ExtractComponentEXT cannot be found");
			LogProc("glExtractComponentEXT({0}, {1}, {2})", res, src, num);
		}

		/// <summary>
		/// Binding for glFlushMappedNamedBufferRangeEXT function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void FlushMappedNamedBufferRangeEXT(UInt32 buffer, IntPtr offset, UInt32 length) {
			if      (Delegates.pglFlushMappedNamedBufferRangeEXT != null)
				Delegates.pglFlushMappedNamedBufferRangeEXT(buffer, offset, length);
			else
				throw new InvalidOperationException("binding point FlushMappedNamedBufferRangeEXT cannot be found");
			LogProc("glFlushMappedNamedBufferRangeEXT({0}, {1}, {2})", buffer, offset, length);
		}

		/// <summary>
		/// Binding for glFogCoorddEXT function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void FogCoordEXT(double coord) {
			if      (Delegates.pglFogCoorddEXT != null)
				Delegates.pglFogCoorddEXT(coord);
			else
				throw new InvalidOperationException("binding point FogCoordEXT cannot be found");
			LogProc("glFogCoorddEXT({0})", coord);
		}

		/// <summary>
		/// Binding for glFogCoorddvEXT function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void FogCoordEXT(double[] coord) {
			unsafe {
				fixed (double* fp_coord = coord)
				{
					if      (Delegates.pglFogCoorddvEXT != null)
						Delegates.pglFogCoorddvEXT(fp_coord);
					else
						throw new InvalidOperationException("binding point FogCoordEXT cannot be found");
				}
			}
			LogProc("glFogCoorddvEXT({0})", coord);
		}

		/// <summary>
		/// Binding for glFogCoordfEXT function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void FogCoordEXT(float coord) {
			if      (Delegates.pglFogCoordfEXT != null)
				Delegates.pglFogCoordfEXT(coord);
			else
				throw new InvalidOperationException("binding point FogCoordEXT cannot be found");
			LogProc("glFogCoordfEXT({0})", coord);
		}

		/// <summary>
		/// Binding for glFogCoordfvEXT function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void FogCoordEXT(float[] coord) {
			unsafe {
				fixed (float* fp_coord = coord)
				{
					if      (Delegates.pglFogCoordfvEXT != null)
						Delegates.pglFogCoordfvEXT(fp_coord);
					else
						throw new InvalidOperationException("binding point FogCoordEXT cannot be found");
				}
			}
			LogProc("glFogCoordfvEXT({0})", coord);
		}

		/// <summary>
		/// Binding for glFogCoordPointerEXT function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void FogCoordPointerEXT(int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglFogCoordPointerEXT != null)
					Delegates.pglFogCoordPointerEXT(type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point FogCoordPointerEXT cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glFogCoordPointerEXT({0}, {1}, {2})", type, stride, pointer);
		}

		/// <summary>
		/// Binding for glFramebufferDrawBufferEXT function.
		/// </summary>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void FramebufferDrawBufferEXT(UInt32 framebuffer, int mode) {
			if      (Delegates.pglFramebufferDrawBufferEXT != null)
				Delegates.pglFramebufferDrawBufferEXT(framebuffer, mode);
			else
				throw new InvalidOperationException("binding point FramebufferDrawBufferEXT cannot be found");
			LogProc("glFramebufferDrawBufferEXT({0}, {1})", framebuffer, mode);
		}

		/// <summary>
		/// Binding for glFramebufferDrawBuffersEXT function.
		/// </summary>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufs">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		public static void FramebufferDrawBuffersEXT(UInt32 framebuffer, Int32 n, int[] bufs) {
			unsafe {
				fixed (int* fp_bufs = bufs)
				{
					if      (Delegates.pglFramebufferDrawBuffersEXT != null)
						Delegates.pglFramebufferDrawBuffersEXT(framebuffer, n, fp_bufs);
					else
						throw new InvalidOperationException("binding point FramebufferDrawBuffersEXT cannot be found");
				}
			}
			LogProc("glFramebufferDrawBuffersEXT({0}, {1}, {2})", framebuffer, n, bufs);
		}

		/// <summary>
		/// Binding for glFramebufferReadBufferEXT function.
		/// </summary>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void FramebufferReadBufferEXT(UInt32 framebuffer, int mode) {
			if      (Delegates.pglFramebufferReadBufferEXT != null)
				Delegates.pglFramebufferReadBufferEXT(framebuffer, mode);
			else
				throw new InvalidOperationException("binding point FramebufferReadBufferEXT cannot be found");
			LogProc("glFramebufferReadBufferEXT({0}, {1})", framebuffer, mode);
		}

		/// <summary>
		/// Binding for glFramebufferRenderbufferEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffertarget">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void FramebufferRenderbufferEXT(int target, int attachment, int renderbuffertarget, UInt32 renderbuffer) {
			if      (Delegates.pglFramebufferRenderbufferEXT != null)
				Delegates.pglFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer);
			else
				throw new InvalidOperationException("binding point FramebufferRenderbufferEXT cannot be found");
			LogProc("glFramebufferRenderbufferEXT({0}, {1}, {2}, {3})", target, attachment, renderbuffertarget, renderbuffer);
		}

		/// <summary>
		/// Binding for glFramebufferTexture1DEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textarget">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void FramebufferTexture1DEXT(int target, int attachment, int textarget, UInt32 texture, int level) {
			if      (Delegates.pglFramebufferTexture1DEXT != null)
				Delegates.pglFramebufferTexture1DEXT(target, attachment, textarget, texture, level);
			else
				throw new InvalidOperationException("binding point FramebufferTexture1DEXT cannot be found");
			LogProc("glFramebufferTexture1DEXT({0}, {1}, {2}, {3}, {4})", target, attachment, textarget, texture, level);
		}

		/// <summary>
		/// Binding for glFramebufferTexture2DEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textarget">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void FramebufferTexture2DEXT(int target, int attachment, int textarget, UInt32 texture, int level) {
			if      (Delegates.pglFramebufferTexture2DEXT != null)
				Delegates.pglFramebufferTexture2DEXT(target, attachment, textarget, texture, level);
			else
				throw new InvalidOperationException("binding point FramebufferTexture2DEXT cannot be found");
			LogProc("glFramebufferTexture2DEXT({0}, {1}, {2}, {3}, {4})", target, attachment, textarget, texture, level);
		}

		/// <summary>
		/// Binding for glFramebufferTexture3DEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textarget">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="zoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void FramebufferTexture3DEXT(int target, int attachment, int textarget, UInt32 texture, int level, int zoffset) {
			if      (Delegates.pglFramebufferTexture3DEXT != null)
				Delegates.pglFramebufferTexture3DEXT(target, attachment, textarget, texture, level, zoffset);
			else
				throw new InvalidOperationException("binding point FramebufferTexture3DEXT cannot be found");
			LogProc("glFramebufferTexture3DEXT({0}, {1}, {2}, {3}, {4}, {5})", target, attachment, textarget, texture, level, zoffset);
		}

		/// <summary>
		/// Binding for glFramebufferTextureEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void FramebufferTextureEXT(int target, int attachment, UInt32 texture, int level) {
			if      (Delegates.pglFramebufferTextureEXT != null)
				Delegates.pglFramebufferTextureEXT(target, attachment, texture, level);
			else
				throw new InvalidOperationException("binding point FramebufferTextureEXT cannot be found");
			LogProc("glFramebufferTextureEXT({0}, {1}, {2}, {3})", target, attachment, texture, level);
		}

		/// <summary>
		/// Binding for glFramebufferTextureFaceEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void FramebufferTextureFaceEXT(int target, int attachment, UInt32 texture, int level, int face) {
			if      (Delegates.pglFramebufferTextureFaceEXT != null)
				Delegates.pglFramebufferTextureFaceEXT(target, attachment, texture, level, face);
			else
				throw new InvalidOperationException("binding point FramebufferTextureFaceEXT cannot be found");
			LogProc("glFramebufferTextureFaceEXT({0}, {1}, {2}, {3}, {4})", target, attachment, texture, level, face);
		}

		/// <summary>
		/// Binding for glFramebufferTextureLayerEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="layer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void FramebufferTextureLayerEXT(int target, int attachment, UInt32 texture, int level, int layer) {
			if      (Delegates.pglFramebufferTextureLayerEXT != null)
				Delegates.pglFramebufferTextureLayerEXT(target, attachment, texture, level, layer);
			else
				throw new InvalidOperationException("binding point FramebufferTextureLayerEXT cannot be found");
			LogProc("glFramebufferTextureLayerEXT({0}, {1}, {2}, {3}, {4})", target, attachment, texture, level, layer);
		}

		/// <summary>
		/// Binding for glGenerateMipmapEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GenerateMipmapEXT(int target) {
			if      (Delegates.pglGenerateMipmapEXT != null)
				Delegates.pglGenerateMipmapEXT(target);
			else
				throw new InvalidOperationException("binding point GenerateMipmapEXT cannot be found");
			LogProc("glGenerateMipmapEXT({0})", target);
		}

		/// <summary>
		/// Binding for glGenerateMultiTexMipmapEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GenerateMultiTexMipmapEXT(int texunit, int target) {
			if      (Delegates.pglGenerateMultiTexMipmapEXT != null)
				Delegates.pglGenerateMultiTexMipmapEXT(texunit, target);
			else
				throw new InvalidOperationException("binding point GenerateMultiTexMipmapEXT cannot be found");
			LogProc("glGenerateMultiTexMipmapEXT({0}, {1})", texunit, target);
		}

		/// <summary>
		/// Binding for glGenerateTextureMipmapEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GenerateTextureMipmapEXT(UInt32 texture, int target) {
			if      (Delegates.pglGenerateTextureMipmapEXT != null)
				Delegates.pglGenerateTextureMipmapEXT(texture, target);
			else
				throw new InvalidOperationException("binding point GenerateTextureMipmapEXT cannot be found");
			LogProc("glGenerateTextureMipmapEXT({0}, {1})", texture, target);
		}

		/// <summary>
		/// Binding for glGenFramebuffersEXT function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="framebuffers">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GenFramebuffersEXT(Int32 n, [Out] UInt32[] framebuffers) {
			unsafe {
				fixed (UInt32* fp_framebuffers = framebuffers)
				{
					if      (Delegates.pglGenFramebuffersEXT != null)
						Delegates.pglGenFramebuffersEXT(n, fp_framebuffers);
					else
						throw new InvalidOperationException("binding point GenFramebuffersEXT cannot be found");
				}
			}
			LogProc("glGenFramebuffersEXT({0}, {1})", n, framebuffers);
		}

		/// <summary>
		/// Binding for glGenFramebuffersEXT function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="framebuffers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GenFramebuffersEXT(Int32 n, out UInt32 framebuffers) {
			unsafe {
				fixed (UInt32* fp_framebuffers = &framebuffers)
				{
					if      (Delegates.pglGenFramebuffersEXT != null)
						Delegates.pglGenFramebuffersEXT(n, fp_framebuffers);
					else
						throw new InvalidOperationException("binding point GenFramebuffersEXT cannot be found");
				}
			}
			LogProc("glGenFramebuffersEXT({0}, {1})", n, framebuffers);
		}
		
		/// <summary>
		/// Binding for glGenFramebuffersEXT function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="framebuffers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GenFramebuffersEXT(Int32 n, UInt32* framebuffers) {
			unsafe {
				if      (Delegates.pglGenFramebuffersEXT != null)
					Delegates.pglGenFramebuffersEXT(n, framebuffers);
				else
					throw new InvalidOperationException("binding point GenFramebuffersEXT cannot be found");
			}
			LogProc("glGenFramebuffersEXT({0}, {1})", n, "framebuffers");
		}
		

		/// <summary>
		/// Binding for glGenRenderbuffersEXT function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffers">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GenRenderbufferEXT(Int32 n, [Out] UInt32[] renderbuffers) {
			unsafe {
				fixed (UInt32* fp_renderbuffers = renderbuffers)
				{
					if      (Delegates.pglGenRenderbuffersEXT != null)
						Delegates.pglGenRenderbuffersEXT(n, fp_renderbuffers);
					else
						throw new InvalidOperationException("binding point GenRenderbufferEXT cannot be found");
				}
			}
			LogProc("glGenRenderbuffersEXT({0}, {1})", n, renderbuffers);
		}

		/// <summary>
		/// Binding for glGenRenderbuffersEXT function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GenRenderbufferEXT(Int32 n, out UInt32 renderbuffers) {
			unsafe {
				fixed (UInt32* fp_renderbuffers = &renderbuffers)
				{
					if      (Delegates.pglGenRenderbuffersEXT != null)
						Delegates.pglGenRenderbuffersEXT(n, fp_renderbuffers);
					else
						throw new InvalidOperationException("binding point GenRenderbufferEXT cannot be found");
				}
			}
			LogProc("glGenRenderbuffersEXT({0}, {1})", n, renderbuffers);
		}
		
		/// <summary>
		/// Binding for glGenRenderbuffersEXT function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GenRenderbufferEXT(Int32 n, UInt32* renderbuffers) {
			unsafe {
				if      (Delegates.pglGenRenderbuffersEXT != null)
					Delegates.pglGenRenderbuffersEXT(n, renderbuffers);
				else
					throw new InvalidOperationException("binding point GenRenderbufferEXT cannot be found");
			}
			LogProc("glGenRenderbuffersEXT({0}, {1})", n, "renderbuffers");
		}
		

		/// <summary>
		/// Binding for glGenSymbolsEXT function.
		/// </summary>
		/// <param name="datatype">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="storagetype">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="range">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="components">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static UInt32 GenSymbolsEXT(int datatype, int storagetype, int range, UInt32 components) {
			UInt32 retvalue;
			if      (Delegates.pglGenSymbolsEXT != null)
				retvalue = (Delegates.pglGenSymbolsEXT(datatype, storagetype, range, components));
			else
				throw new InvalidOperationException("binding point GenSymbolsEXT cannot be found");
			LogProc("glGenSymbolsEXT({0}, {1}, {2}, {3}) = {4}", datatype, storagetype, range, components, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGenTexturesEXT function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textures">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GenTexturesEXT(Int32 n, [Out] UInt32[] textures) {
			unsafe {
				fixed (UInt32* fp_textures = textures)
				{
					if      (Delegates.pglGenTexturesEXT != null)
						Delegates.pglGenTexturesEXT(n, fp_textures);
					else
						throw new InvalidOperationException("binding point GenTexturesEXT cannot be found");
				}
			}
			LogProc("glGenTexturesEXT({0}, {1})", n, textures);
		}

		/// <summary>
		/// Binding for glGenTexturesEXT function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textures">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GenTexturesEXT(Int32 n, out UInt32 textures) {
			unsafe {
				fixed (UInt32* fp_textures = &textures)
				{
					if      (Delegates.pglGenTexturesEXT != null)
						Delegates.pglGenTexturesEXT(n, fp_textures);
					else
						throw new InvalidOperationException("binding point GenTexturesEXT cannot be found");
				}
			}
			LogProc("glGenTexturesEXT({0}, {1})", n, textures);
		}
		

		/// <summary>
		/// Binding for glGenVertexShadersEXT function.
		/// </summary>
		/// <param name="range">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static UInt32 GenVertexShadersEXT(UInt32 range) {
			UInt32 retvalue;
			if      (Delegates.pglGenVertexShadersEXT != null)
				retvalue = (Delegates.pglGenVertexShadersEXT(range));
			else
				throw new InvalidOperationException("binding point GenVertexShadersEXT cannot be found");
			LogProc("glGenVertexShadersEXT({0}) = {1}", range, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetBooleanIndexedvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Boolean*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetBooleanIndexedEXT(int target, UInt32 index, [Out] bool[] data) {
			unsafe {
				fixed (bool* fp_data = data)
				{
					if      (Delegates.pglGetBooleanIndexedvEXT != null)
						Delegates.pglGetBooleanIndexedvEXT(target, index, fp_data);
					else
						throw new InvalidOperationException("binding point GetBooleanIndexedEXT cannot be found");
				}
			}
			LogProc("glGetBooleanIndexedvEXT({0}, {1}, {2})", target, index, data);
		}

		/// <summary>
		/// Binding for glGetBooleanIndexedvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetBooleanIndexedEXT(int target, UInt32 index, out bool data) {
			unsafe {
				fixed (bool* fp_data = &data)
				{
					if      (Delegates.pglGetBooleanIndexedvEXT != null)
						Delegates.pglGetBooleanIndexedvEXT(target, index, fp_data);
					else
						throw new InvalidOperationException("binding point GetBooleanIndexedEXT cannot be found");
				}
			}
			LogProc("glGetBooleanIndexedvEXT({0}, {1}, {2})", target, index, data);
		}
		

		/// <summary>
		/// Binding for glGetColorTableEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void GetColorTableEXT(int target, int format, int type, [Out] object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetColorTableEXT != null)
					Delegates.pglGetColorTableEXT(target, format, type, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetColorTableEXT cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glGetColorTableEXT({0}, {1}, {2}, {3})", target, format, type, data);
		}

		/// <summary>
		/// Binding for glGetColorTableParameterfvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void GetColorTableParameterEXT(int target, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetColorTableParameterfvEXT != null)
						Delegates.pglGetColorTableParameterfvEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetColorTableParameterEXT cannot be found");
				}
			}
			LogProc("glGetColorTableParameterfvEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetColorTableParameterfvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void GetColorTableParameterEXT(int target, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetColorTableParameterfvEXT != null)
					Delegates.pglGetColorTableParameterfvEXT(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetColorTableParameterEXT cannot be found");
			}
			LogProc("glGetColorTableParameterfvEXT({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetColorTableParameterivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void GetColorTableParameterEXT(int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetColorTableParameterivEXT != null)
						Delegates.pglGetColorTableParameterivEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetColorTableParameterEXT cannot be found");
				}
			}
			LogProc("glGetColorTableParameterivEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetColorTableParameterivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void GetColorTableParameterEXT(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetColorTableParameterivEXT != null)
					Delegates.pglGetColorTableParameterivEXT(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetColorTableParameterEXT cannot be found");
			}
			LogProc("glGetColorTableParameterivEXT({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetCompressedMultiTexImageEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="lod">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="img">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetCompressedMultiTexImageEXT(int texunit, int target, int lod, [Out] object img) {
			GCHandle pp_img = GCHandle.Alloc(img, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetCompressedMultiTexImageEXT != null)
					Delegates.pglGetCompressedMultiTexImageEXT(texunit, target, lod, pp_img.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetCompressedMultiTexImageEXT cannot be found");
			} finally {
				pp_img.Free();
			}
			LogProc("glGetCompressedMultiTexImageEXT({0}, {1}, {2}, {3})", texunit, target, lod, img);
		}

		/// <summary>
		/// Binding for glGetCompressedTextureImageEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="lod">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="img">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetCompressedTextureImageEXT(UInt32 texture, int target, int lod, [Out] object img) {
			GCHandle pp_img = GCHandle.Alloc(img, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetCompressedTextureImageEXT != null)
					Delegates.pglGetCompressedTextureImageEXT(texture, target, lod, pp_img.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetCompressedTextureImageEXT cannot be found");
			} finally {
				pp_img.Free();
			}
			LogProc("glGetCompressedTextureImageEXT({0}, {1}, {2}, {3})", texture, target, lod, img);
		}

		/// <summary>
		/// Binding for glGetConvolutionFilterEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="image">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetConvolutionFilterEXT(int target, int format, int type, [Out] object image) {
			GCHandle pp_image = GCHandle.Alloc(image, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetConvolutionFilterEXT != null)
					Delegates.pglGetConvolutionFilterEXT(target, format, type, pp_image.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetConvolutionFilterEXT cannot be found");
			} finally {
				pp_image.Free();
			}
			LogProc("glGetConvolutionFilterEXT({0}, {1}, {2}, {3})", target, format, type, image);
		}

		/// <summary>
		/// Binding for glGetConvolutionParameterfvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetConvolutionParameterEXT(int target, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetConvolutionParameterfvEXT != null)
						Delegates.pglGetConvolutionParameterfvEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetConvolutionParameterEXT cannot be found");
				}
			}
			LogProc("glGetConvolutionParameterfvEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetConvolutionParameterfvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetConvolutionParameterEXT(int target, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetConvolutionParameterfvEXT != null)
					Delegates.pglGetConvolutionParameterfvEXT(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetConvolutionParameterEXT cannot be found");
			}
			LogProc("glGetConvolutionParameterfvEXT({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetConvolutionParameterivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetConvolutionParameterEXT(int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetConvolutionParameterivEXT != null)
						Delegates.pglGetConvolutionParameterivEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetConvolutionParameterEXT cannot be found");
				}
			}
			LogProc("glGetConvolutionParameterivEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetConvolutionParameterivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetConvolutionParameterEXT(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetConvolutionParameterivEXT != null)
					Delegates.pglGetConvolutionParameterivEXT(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetConvolutionParameterEXT cannot be found");
			}
			LogProc("glGetConvolutionParameterivEXT({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetDoubleIndexedvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Double*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetDoubleIndexedEXT(int target, UInt32 index, [Out] double[] data) {
			unsafe {
				fixed (double* fp_data = data)
				{
					if      (Delegates.pglGetDoubleIndexedvEXT != null)
						Delegates.pglGetDoubleIndexedvEXT(target, index, fp_data);
					else
						throw new InvalidOperationException("binding point GetDoubleIndexedEXT cannot be found");
				}
			}
			LogProc("glGetDoubleIndexedvEXT({0}, {1}, {2})", target, index, data);
		}

		/// <summary>
		/// Binding for glGetDoubleIndexedvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		public static void GetDoubleIndexedEXT(int target, UInt32 index, double* data) {
			unsafe {
				if      (Delegates.pglGetDoubleIndexedvEXT != null)
					Delegates.pglGetDoubleIndexedvEXT(target, index, data);
				else
					throw new InvalidOperationException("binding point GetDoubleIndexedEXT cannot be found");
			}
			LogProc("glGetDoubleIndexedvEXT({0}, {1}, {2})", target, index, "data");
		}
		

		/// <summary>
		/// Binding for glGetFloatIndexedvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetFloatIndexedEXT(int target, UInt32 index, [Out] float[] data) {
			unsafe {
				fixed (float* fp_data = data)
				{
					if      (Delegates.pglGetFloatIndexedvEXT != null)
						Delegates.pglGetFloatIndexedvEXT(target, index, fp_data);
					else
						throw new InvalidOperationException("binding point GetFloatIndexedEXT cannot be found");
				}
			}
			LogProc("glGetFloatIndexedvEXT({0}, {1}, {2})", target, index, data);
		}

		/// <summary>
		/// Binding for glGetFloatIndexedvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void GetFloatIndexedEXT(int target, UInt32 index, float* data) {
			unsafe {
				if      (Delegates.pglGetFloatIndexedvEXT != null)
					Delegates.pglGetFloatIndexedvEXT(target, index, data);
				else
					throw new InvalidOperationException("binding point GetFloatIndexedEXT cannot be found");
			}
			LogProc("glGetFloatIndexedvEXT({0}, {1}, {2})", target, index, "data");
		}
		

		/// <summary>
		/// Binding for glGetFragDataLocationEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static int GetFragDataLocationEXT(UInt32 program, string name) {
			int retvalue;
			if      (Delegates.pglGetFragDataLocationEXT != null)
				retvalue = (Delegates.pglGetFragDataLocationEXT(program, name));
			else
				throw new InvalidOperationException("binding point GetFragDataLocationEXT cannot be found");
			LogProc("glGetFragDataLocationEXT({0}, {1}) = {2}", program, name, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetFramebufferAttachmentParameterivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetFramebufferAttachmentParameterEXT(int target, int attachment, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetFramebufferAttachmentParameterivEXT != null)
						Delegates.pglGetFramebufferAttachmentParameterivEXT(target, attachment, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetFramebufferAttachmentParameterEXT cannot be found");
				}
			}
			LogProc("glGetFramebufferAttachmentParameterivEXT({0}, {1}, {2}, {3})", target, attachment, pname, @params);
		}

		/// <summary>
		/// Binding for glGetFramebufferAttachmentParameterivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetFramebufferAttachmentParameterEXT(int target, int attachment, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetFramebufferAttachmentParameterivEXT != null)
						Delegates.pglGetFramebufferAttachmentParameterivEXT(target, attachment, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetFramebufferAttachmentParameterEXT cannot be found");
				}
			}
			LogProc("glGetFramebufferAttachmentParameterivEXT({0}, {1}, {2}, {3})", target, attachment, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetFramebufferAttachmentParameterivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetFramebufferAttachmentParameterEXT(int target, int attachment, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetFramebufferAttachmentParameterivEXT != null)
					Delegates.pglGetFramebufferAttachmentParameterivEXT(target, attachment, pname, @params);
				else
					throw new InvalidOperationException("binding point GetFramebufferAttachmentParameterEXT cannot be found");
			}
			LogProc("glGetFramebufferAttachmentParameterivEXT({0}, {1}, {2}, {3})", target, attachment, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetFramebufferParameterivEXT function.
		/// </summary>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetFramebufferParameterEXT(UInt32 framebuffer, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetFramebufferParameterivEXT != null)
						Delegates.pglGetFramebufferParameterivEXT(framebuffer, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetFramebufferParameterEXT cannot be found");
				}
			}
			LogProc("glGetFramebufferParameterivEXT({0}, {1}, {2})", framebuffer, pname, @params);
		}

		/// <summary>
		/// Binding for glGetFramebufferParameterivEXT function.
		/// </summary>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetFramebufferParameterEXT(UInt32 framebuffer, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetFramebufferParameterivEXT != null)
					Delegates.pglGetFramebufferParameterivEXT(framebuffer, pname, @params);
				else
					throw new InvalidOperationException("binding point GetFramebufferParameterEXT cannot be found");
			}
			LogProc("glGetFramebufferParameterivEXT({0}, {1}, {2})", framebuffer, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetHistogramEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="reset">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetHistogramEXT(int target, bool reset, int format, int type, [Out] object values) {
			GCHandle pp_values = GCHandle.Alloc(values, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetHistogramEXT != null)
					Delegates.pglGetHistogramEXT(target, reset, format, type, pp_values.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetHistogramEXT cannot be found");
			} finally {
				pp_values.Free();
			}
			LogProc("glGetHistogramEXT({0}, {1}, {2}, {3}, {4})", target, reset, format, type, values);
		}

		/// <summary>
		/// Binding for glGetHistogramParameterfvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetHistogramParameterEXT(int target, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetHistogramParameterfvEXT != null)
						Delegates.pglGetHistogramParameterfvEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetHistogramParameterEXT cannot be found");
				}
			}
			LogProc("glGetHistogramParameterfvEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetHistogramParameterfvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetHistogramParameterEXT(int target, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetHistogramParameterfvEXT != null)
					Delegates.pglGetHistogramParameterfvEXT(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetHistogramParameterEXT cannot be found");
			}
			LogProc("glGetHistogramParameterfvEXT({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetHistogramParameterivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetHistogramParameterEXT(int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetHistogramParameterivEXT != null)
						Delegates.pglGetHistogramParameterivEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetHistogramParameterEXT cannot be found");
				}
			}
			LogProc("glGetHistogramParameterivEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetHistogramParameterivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetHistogramParameterEXT(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetHistogramParameterivEXT != null)
					Delegates.pglGetHistogramParameterivEXT(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetHistogramParameterEXT cannot be found");
			}
			LogProc("glGetHistogramParameterivEXT({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetIntegerIndexedvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetIntegerIndexedEXT(int target, UInt32 index, [Out] int[] data) {
			unsafe {
				fixed (int* fp_data = data)
				{
					if      (Delegates.pglGetIntegerIndexedvEXT != null)
						Delegates.pglGetIntegerIndexedvEXT(target, index, fp_data);
					else
						throw new InvalidOperationException("binding point GetIntegerIndexedEXT cannot be found");
				}
			}
			LogProc("glGetIntegerIndexedvEXT({0}, {1}, {2})", target, index, data);
		}

		/// <summary>
		/// Binding for glGetIntegerIndexedvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetIntegerIndexedEXT(int target, UInt32 index, out int data) {
			unsafe {
				fixed (int* fp_data = &data)
				{
					if      (Delegates.pglGetIntegerIndexedvEXT != null)
						Delegates.pglGetIntegerIndexedvEXT(target, index, fp_data);
					else
						throw new InvalidOperationException("binding point GetIntegerIndexedEXT cannot be found");
				}
			}
			LogProc("glGetIntegerIndexedvEXT({0}, {1}, {2})", target, index, data);
		}
		
		/// <summary>
		/// Binding for glGetIntegerIndexedvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetIntegerIndexedEXT(int target, UInt32 index, int* data) {
			unsafe {
				if      (Delegates.pglGetIntegerIndexedvEXT != null)
					Delegates.pglGetIntegerIndexedvEXT(target, index, data);
				else
					throw new InvalidOperationException("binding point GetIntegerIndexedEXT cannot be found");
			}
			LogProc("glGetIntegerIndexedvEXT({0}, {1}, {2})", target, index, "data");
		}
		

		/// <summary>
		/// Binding for glGetInvariantBooleanvEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Boolean*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetInvariantBooleanEXT(UInt32 id, int value, [Out] bool[] data) {
			unsafe {
				fixed (bool* fp_data = data)
				{
					if      (Delegates.pglGetInvariantBooleanvEXT != null)
						Delegates.pglGetInvariantBooleanvEXT(id, value, fp_data);
					else
						throw new InvalidOperationException("binding point GetInvariantBooleanEXT cannot be found");
				}
			}
			LogProc("glGetInvariantBooleanvEXT({0}, {1}, {2})", id, value, data);
		}

		/// <summary>
		/// Binding for glGetInvariantFloatvEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetInvariantFloatEXT(UInt32 id, int value, [Out] float[] data) {
			unsafe {
				fixed (float* fp_data = data)
				{
					if      (Delegates.pglGetInvariantFloatvEXT != null)
						Delegates.pglGetInvariantFloatvEXT(id, value, fp_data);
					else
						throw new InvalidOperationException("binding point GetInvariantFloatEXT cannot be found");
				}
			}
			LogProc("glGetInvariantFloatvEXT({0}, {1}, {2})", id, value, data);
		}

		/// <summary>
		/// Binding for glGetInvariantFloatvEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetInvariantFloatEXT(UInt32 id, int value, float* data) {
			unsafe {
				if      (Delegates.pglGetInvariantFloatvEXT != null)
					Delegates.pglGetInvariantFloatvEXT(id, value, data);
				else
					throw new InvalidOperationException("binding point GetInvariantFloatEXT cannot be found");
			}
			LogProc("glGetInvariantFloatvEXT({0}, {1}, {2})", id, value, "data");
		}
		

		/// <summary>
		/// Binding for glGetInvariantIntegervEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetInvariantIntegerEXT(UInt32 id, int value, [Out] int[] data) {
			unsafe {
				fixed (int* fp_data = data)
				{
					if      (Delegates.pglGetInvariantIntegervEXT != null)
						Delegates.pglGetInvariantIntegervEXT(id, value, fp_data);
					else
						throw new InvalidOperationException("binding point GetInvariantIntegerEXT cannot be found");
				}
			}
			LogProc("glGetInvariantIntegervEXT({0}, {1}, {2})", id, value, data);
		}

		/// <summary>
		/// Binding for glGetInvariantIntegervEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetInvariantIntegerEXT(UInt32 id, int value, int* data) {
			unsafe {
				if      (Delegates.pglGetInvariantIntegervEXT != null)
					Delegates.pglGetInvariantIntegervEXT(id, value, data);
				else
					throw new InvalidOperationException("binding point GetInvariantIntegerEXT cannot be found");
			}
			LogProc("glGetInvariantIntegervEXT({0}, {1}, {2})", id, value, "data");
		}
		

		/// <summary>
		/// Binding for glGetLocalConstantBooleanvEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Boolean*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetLocalConstantBooleanEXT(UInt32 id, int value, [Out] bool[] data) {
			unsafe {
				fixed (bool* fp_data = data)
				{
					if      (Delegates.pglGetLocalConstantBooleanvEXT != null)
						Delegates.pglGetLocalConstantBooleanvEXT(id, value, fp_data);
					else
						throw new InvalidOperationException("binding point GetLocalConstantBooleanEXT cannot be found");
				}
			}
			LogProc("glGetLocalConstantBooleanvEXT({0}, {1}, {2})", id, value, data);
		}

		/// <summary>
		/// Binding for glGetLocalConstantFloatvEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetLocalConstantFloatEXT(UInt32 id, int value, [Out] float[] data) {
			unsafe {
				fixed (float* fp_data = data)
				{
					if      (Delegates.pglGetLocalConstantFloatvEXT != null)
						Delegates.pglGetLocalConstantFloatvEXT(id, value, fp_data);
					else
						throw new InvalidOperationException("binding point GetLocalConstantFloatEXT cannot be found");
				}
			}
			LogProc("glGetLocalConstantFloatvEXT({0}, {1}, {2})", id, value, data);
		}

		/// <summary>
		/// Binding for glGetLocalConstantFloatvEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetLocalConstantFloatEXT(UInt32 id, int value, float* data) {
			unsafe {
				if      (Delegates.pglGetLocalConstantFloatvEXT != null)
					Delegates.pglGetLocalConstantFloatvEXT(id, value, data);
				else
					throw new InvalidOperationException("binding point GetLocalConstantFloatEXT cannot be found");
			}
			LogProc("glGetLocalConstantFloatvEXT({0}, {1}, {2})", id, value, "data");
		}
		

		/// <summary>
		/// Binding for glGetLocalConstantIntegervEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetLocalConstantIntegerEXT(UInt32 id, int value, [Out] int[] data) {
			unsafe {
				fixed (int* fp_data = data)
				{
					if      (Delegates.pglGetLocalConstantIntegervEXT != null)
						Delegates.pglGetLocalConstantIntegervEXT(id, value, fp_data);
					else
						throw new InvalidOperationException("binding point GetLocalConstantIntegerEXT cannot be found");
				}
			}
			LogProc("glGetLocalConstantIntegervEXT({0}, {1}, {2})", id, value, data);
		}

		/// <summary>
		/// Binding for glGetLocalConstantIntegervEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetLocalConstantIntegerEXT(UInt32 id, int value, int* data) {
			unsafe {
				if      (Delegates.pglGetLocalConstantIntegervEXT != null)
					Delegates.pglGetLocalConstantIntegervEXT(id, value, data);
				else
					throw new InvalidOperationException("binding point GetLocalConstantIntegerEXT cannot be found");
			}
			LogProc("glGetLocalConstantIntegervEXT({0}, {1}, {2})", id, value, "data");
		}
		

		/// <summary>
		/// Binding for glGetMinmaxEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="reset">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetMinmaxEXT(int target, bool reset, int format, int type, [Out] object values) {
			GCHandle pp_values = GCHandle.Alloc(values, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetMinmaxEXT != null)
					Delegates.pglGetMinmaxEXT(target, reset, format, type, pp_values.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetMinmaxEXT cannot be found");
			} finally {
				pp_values.Free();
			}
			LogProc("glGetMinmaxEXT({0}, {1}, {2}, {3}, {4})", target, reset, format, type, values);
		}

		/// <summary>
		/// Binding for glGetMinmaxParameterfvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetMinmaxParameterEXT(int target, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetMinmaxParameterfvEXT != null)
						Delegates.pglGetMinmaxParameterfvEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMinmaxParameterEXT cannot be found");
				}
			}
			LogProc("glGetMinmaxParameterfvEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetMinmaxParameterfvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetMinmaxParameterEXT(int target, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetMinmaxParameterfvEXT != null)
					Delegates.pglGetMinmaxParameterfvEXT(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetMinmaxParameterEXT cannot be found");
			}
			LogProc("glGetMinmaxParameterfvEXT({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetMinmaxParameterivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetMinmaxParameterEXT(int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetMinmaxParameterivEXT != null)
						Delegates.pglGetMinmaxParameterivEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMinmaxParameterEXT cannot be found");
				}
			}
			LogProc("glGetMinmaxParameterivEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetMinmaxParameterivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetMinmaxParameterEXT(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetMinmaxParameterivEXT != null)
					Delegates.pglGetMinmaxParameterivEXT(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetMinmaxParameterEXT cannot be found");
			}
			LogProc("glGetMinmaxParameterivEXT({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetMultiTexEnvfvEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetMultiTexEnvEXT(int texunit, int target, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetMultiTexEnvfvEXT != null)
						Delegates.pglGetMultiTexEnvfvEXT(texunit, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMultiTexEnvEXT cannot be found");
				}
			}
			LogProc("glGetMultiTexEnvfvEXT({0}, {1}, {2}, {3})", texunit, target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetMultiTexEnvfvEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void GetMultiTexEnvEXT(int texunit, int target, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetMultiTexEnvfvEXT != null)
					Delegates.pglGetMultiTexEnvfvEXT(texunit, target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetMultiTexEnvEXT cannot be found");
			}
			LogProc("glGetMultiTexEnvfvEXT({0}, {1}, {2}, {3})", texunit, target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetMultiTexEnvivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetMultiTexEnvEXT(int texunit, int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetMultiTexEnvivEXT != null)
						Delegates.pglGetMultiTexEnvivEXT(texunit, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMultiTexEnvEXT cannot be found");
				}
			}
			LogProc("glGetMultiTexEnvivEXT({0}, {1}, {2}, {3})", texunit, target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetMultiTexEnvivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetMultiTexEnvEXT(int texunit, int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetMultiTexEnvivEXT != null)
					Delegates.pglGetMultiTexEnvivEXT(texunit, target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetMultiTexEnvEXT cannot be found");
			}
			LogProc("glGetMultiTexEnvivEXT({0}, {1}, {2}, {3})", texunit, target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetMultiTexGendvEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetMultiTexGenEXT(int texunit, int coord, int pname, [Out] double[] @params) {
			unsafe {
				fixed (double* fp_params = @params)
				{
					if      (Delegates.pglGetMultiTexGendvEXT != null)
						Delegates.pglGetMultiTexGendvEXT(texunit, coord, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMultiTexGenEXT cannot be found");
				}
			}
			LogProc("glGetMultiTexGendvEXT({0}, {1}, {2}, {3})", texunit, coord, pname, @params);
		}

		/// <summary>
		/// Binding for glGetMultiTexGendvEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		public static void GetMultiTexGenEXT(int texunit, int coord, int pname, double* @params) {
			unsafe {
				if      (Delegates.pglGetMultiTexGendvEXT != null)
					Delegates.pglGetMultiTexGendvEXT(texunit, coord, pname, @params);
				else
					throw new InvalidOperationException("binding point GetMultiTexGenEXT cannot be found");
			}
			LogProc("glGetMultiTexGendvEXT({0}, {1}, {2}, {3})", texunit, coord, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetMultiTexGenfvEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetMultiTexGenEXT(int texunit, int coord, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetMultiTexGenfvEXT != null)
						Delegates.pglGetMultiTexGenfvEXT(texunit, coord, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMultiTexGenEXT cannot be found");
				}
			}
			LogProc("glGetMultiTexGenfvEXT({0}, {1}, {2}, {3})", texunit, coord, pname, @params);
		}

		/// <summary>
		/// Binding for glGetMultiTexGenfvEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void GetMultiTexGenEXT(int texunit, int coord, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetMultiTexGenfvEXT != null)
					Delegates.pglGetMultiTexGenfvEXT(texunit, coord, pname, @params);
				else
					throw new InvalidOperationException("binding point GetMultiTexGenEXT cannot be found");
			}
			LogProc("glGetMultiTexGenfvEXT({0}, {1}, {2}, {3})", texunit, coord, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetMultiTexGenivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetMultiTexGenEXT(int texunit, int coord, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetMultiTexGenivEXT != null)
						Delegates.pglGetMultiTexGenivEXT(texunit, coord, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMultiTexGenEXT cannot be found");
				}
			}
			LogProc("glGetMultiTexGenivEXT({0}, {1}, {2}, {3})", texunit, coord, pname, @params);
		}

		/// <summary>
		/// Binding for glGetMultiTexGenivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetMultiTexGenEXT(int texunit, int coord, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetMultiTexGenivEXT != null)
					Delegates.pglGetMultiTexGenivEXT(texunit, coord, pname, @params);
				else
					throw new InvalidOperationException("binding point GetMultiTexGenEXT cannot be found");
			}
			LogProc("glGetMultiTexGenivEXT({0}, {1}, {2}, {3})", texunit, coord, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetMultiTexImageEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetMultiTexImageEXT(int texunit, int target, int level, int format, int type, [Out] object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetMultiTexImageEXT != null)
					Delegates.pglGetMultiTexImageEXT(texunit, target, level, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetMultiTexImageEXT cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glGetMultiTexImageEXT({0}, {1}, {2}, {3}, {4}, {5})", texunit, target, level, format, type, pixels);
		}

		/// <summary>
		/// Binding for glGetMultiTexLevelParameterfvEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetMultiTexLevelParameterEXT(int texunit, int target, int level, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetMultiTexLevelParameterfvEXT != null)
						Delegates.pglGetMultiTexLevelParameterfvEXT(texunit, target, level, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMultiTexLevelParameterEXT cannot be found");
				}
			}
			LogProc("glGetMultiTexLevelParameterfvEXT({0}, {1}, {2}, {3}, {4})", texunit, target, level, pname, @params);
		}

		/// <summary>
		/// Binding for glGetMultiTexLevelParameterfvEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void GetMultiTexLevelParameterEXT(int texunit, int target, int level, int pname, out float @params) {
			unsafe {
				fixed (float* fp_params = &@params)
				{
					if      (Delegates.pglGetMultiTexLevelParameterfvEXT != null)
						Delegates.pglGetMultiTexLevelParameterfvEXT(texunit, target, level, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMultiTexLevelParameterEXT cannot be found");
				}
			}
			LogProc("glGetMultiTexLevelParameterfvEXT({0}, {1}, {2}, {3}, {4})", texunit, target, level, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetMultiTexLevelParameterfvEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void GetMultiTexLevelParameterEXT(int texunit, int target, int level, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetMultiTexLevelParameterfvEXT != null)
					Delegates.pglGetMultiTexLevelParameterfvEXT(texunit, target, level, pname, @params);
				else
					throw new InvalidOperationException("binding point GetMultiTexLevelParameterEXT cannot be found");
			}
			LogProc("glGetMultiTexLevelParameterfvEXT({0}, {1}, {2}, {3}, {4})", texunit, target, level, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetMultiTexLevelParameterivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetMultiTexLevelParameterEXT(int texunit, int target, int level, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetMultiTexLevelParameterivEXT != null)
						Delegates.pglGetMultiTexLevelParameterivEXT(texunit, target, level, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMultiTexLevelParameterEXT cannot be found");
				}
			}
			LogProc("glGetMultiTexLevelParameterivEXT({0}, {1}, {2}, {3}, {4})", texunit, target, level, pname, @params);
		}

		/// <summary>
		/// Binding for glGetMultiTexLevelParameterivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetMultiTexLevelParameterEXT(int texunit, int target, int level, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetMultiTexLevelParameterivEXT != null)
						Delegates.pglGetMultiTexLevelParameterivEXT(texunit, target, level, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMultiTexLevelParameterEXT cannot be found");
				}
			}
			LogProc("glGetMultiTexLevelParameterivEXT({0}, {1}, {2}, {3}, {4})", texunit, target, level, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetMultiTexLevelParameterivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetMultiTexLevelParameterEXT(int texunit, int target, int level, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetMultiTexLevelParameterivEXT != null)
					Delegates.pglGetMultiTexLevelParameterivEXT(texunit, target, level, pname, @params);
				else
					throw new InvalidOperationException("binding point GetMultiTexLevelParameterEXT cannot be found");
			}
			LogProc("glGetMultiTexLevelParameterivEXT({0}, {1}, {2}, {3}, {4})", texunit, target, level, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetMultiTexParameterfvEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetMultiTexParameterEXT(int texunit, int target, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetMultiTexParameterfvEXT != null)
						Delegates.pglGetMultiTexParameterfvEXT(texunit, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMultiTexParameterEXT cannot be found");
				}
			}
			LogProc("glGetMultiTexParameterfvEXT({0}, {1}, {2}, {3})", texunit, target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetMultiTexParameterfvEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void GetMultiTexParameterEXT(int texunit, int target, int pname, out float @params) {
			unsafe {
				fixed (float* fp_params = &@params)
				{
					if      (Delegates.pglGetMultiTexParameterfvEXT != null)
						Delegates.pglGetMultiTexParameterfvEXT(texunit, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMultiTexParameterEXT cannot be found");
				}
			}
			LogProc("glGetMultiTexParameterfvEXT({0}, {1}, {2}, {3})", texunit, target, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetMultiTexParameterfvEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void GetMultiTexParameterEXT(int texunit, int target, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetMultiTexParameterfvEXT != null)
					Delegates.pglGetMultiTexParameterfvEXT(texunit, target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetMultiTexParameterEXT cannot be found");
			}
			LogProc("glGetMultiTexParameterfvEXT({0}, {1}, {2}, {3})", texunit, target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetMultiTexParameterIivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetMultiTexParameterIEXT(int texunit, int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetMultiTexParameterIivEXT != null)
						Delegates.pglGetMultiTexParameterIivEXT(texunit, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMultiTexParameterIEXT cannot be found");
				}
			}
			LogProc("glGetMultiTexParameterIivEXT({0}, {1}, {2}, {3})", texunit, target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetMultiTexParameterIivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetMultiTexParameterIEXT(int texunit, int target, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetMultiTexParameterIivEXT != null)
						Delegates.pglGetMultiTexParameterIivEXT(texunit, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMultiTexParameterIEXT cannot be found");
				}
			}
			LogProc("glGetMultiTexParameterIivEXT({0}, {1}, {2}, {3})", texunit, target, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetMultiTexParameterIivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetMultiTexParameterIEXT(int texunit, int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetMultiTexParameterIivEXT != null)
					Delegates.pglGetMultiTexParameterIivEXT(texunit, target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetMultiTexParameterIEXT cannot be found");
			}
			LogProc("glGetMultiTexParameterIivEXT({0}, {1}, {2}, {3})", texunit, target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetMultiTexParameterIuivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetMultiTexParameterIEXT(int texunit, int target, int pname, [Out] UInt32[] @params) {
			unsafe {
				fixed (UInt32* fp_params = @params)
				{
					if      (Delegates.pglGetMultiTexParameterIuivEXT != null)
						Delegates.pglGetMultiTexParameterIuivEXT(texunit, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMultiTexParameterIEXT cannot be found");
				}
			}
			LogProc("glGetMultiTexParameterIuivEXT({0}, {1}, {2}, {3})", texunit, target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetMultiTexParameterIuivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void GetMultiTexParameterIEXT(int texunit, int target, int pname, out UInt32 @params) {
			unsafe {
				fixed (UInt32* fp_params = &@params)
				{
					if      (Delegates.pglGetMultiTexParameterIuivEXT != null)
						Delegates.pglGetMultiTexParameterIuivEXT(texunit, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMultiTexParameterIEXT cannot be found");
				}
			}
			LogProc("glGetMultiTexParameterIuivEXT({0}, {1}, {2}, {3})", texunit, target, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetMultiTexParameterIuivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void GetMultiTexParameterIEXT(int texunit, int target, int pname, UInt32* @params) {
			unsafe {
				if      (Delegates.pglGetMultiTexParameterIuivEXT != null)
					Delegates.pglGetMultiTexParameterIuivEXT(texunit, target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetMultiTexParameterIEXT cannot be found");
			}
			LogProc("glGetMultiTexParameterIuivEXT({0}, {1}, {2}, {3})", texunit, target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetMultiTexParameterivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetMultiTexParameterEXT(int texunit, int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetMultiTexParameterivEXT != null)
						Delegates.pglGetMultiTexParameterivEXT(texunit, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMultiTexParameterEXT cannot be found");
				}
			}
			LogProc("glGetMultiTexParameterivEXT({0}, {1}, {2}, {3})", texunit, target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetMultiTexParameterivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetMultiTexParameterEXT(int texunit, int target, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetMultiTexParameterivEXT != null)
						Delegates.pglGetMultiTexParameterivEXT(texunit, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMultiTexParameterEXT cannot be found");
				}
			}
			LogProc("glGetMultiTexParameterivEXT({0}, {1}, {2}, {3})", texunit, target, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetMultiTexParameterivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetMultiTexParameterEXT(int texunit, int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetMultiTexParameterivEXT != null)
					Delegates.pglGetMultiTexParameterivEXT(texunit, target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetMultiTexParameterEXT cannot be found");
			}
			LogProc("glGetMultiTexParameterivEXT({0}, {1}, {2}, {3})", texunit, target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetNamedBufferParameterivEXT function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetNamedBufferParameterEXT(UInt32 buffer, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetNamedBufferParameterivEXT != null)
						Delegates.pglGetNamedBufferParameterivEXT(buffer, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetNamedBufferParameterEXT cannot be found");
				}
			}
			LogProc("glGetNamedBufferParameterivEXT({0}, {1}, {2})", buffer, pname, @params);
		}

		/// <summary>
		/// Binding for glGetNamedBufferParameterivEXT function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetNamedBufferParameterEXT(UInt32 buffer, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetNamedBufferParameterivEXT != null)
					Delegates.pglGetNamedBufferParameterivEXT(buffer, pname, @params);
				else
					throw new InvalidOperationException("binding point GetNamedBufferParameterEXT cannot be found");
			}
			LogProc("glGetNamedBufferParameterivEXT({0}, {1}, {2})", buffer, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetNamedBufferPointervEXT function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.IntPtr*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetNamedBufferPointerEXT(UInt32 buffer, int pname, [Out] IntPtr[] @params) {
			unsafe {
				fixed (IntPtr* fp_params = @params)
				{
					if      (Delegates.pglGetNamedBufferPointervEXT != null)
						Delegates.pglGetNamedBufferPointervEXT(buffer, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetNamedBufferPointerEXT cannot be found");
				}
			}
			LogProc("glGetNamedBufferPointervEXT({0}, {1}, {2})", buffer, pname, @params);
		}

		/// <summary>
		/// Binding for glGetNamedBufferSubDataEXT function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetNamedBufferSubDataEXT(UInt32 buffer, IntPtr offset, UInt32 size, [Out] object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetNamedBufferSubDataEXT != null)
					Delegates.pglGetNamedBufferSubDataEXT(buffer, offset, size, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetNamedBufferSubDataEXT cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glGetNamedBufferSubDataEXT({0}, {1}, {2}, {3})", buffer, offset, size, data);
		}

		/// <summary>
		/// Binding for glGetNamedFramebufferAttachmentParameterivEXT function.
		/// </summary>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetNamedFramebufferAttachmentParameterEXT(UInt32 framebuffer, int attachment, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetNamedFramebufferAttachmentParameterivEXT != null)
						Delegates.pglGetNamedFramebufferAttachmentParameterivEXT(framebuffer, attachment, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetNamedFramebufferAttachmentParameterEXT cannot be found");
				}
			}
			LogProc("glGetNamedFramebufferAttachmentParameterivEXT({0}, {1}, {2}, {3})", framebuffer, attachment, pname, @params);
		}

		/// <summary>
		/// Binding for glGetNamedFramebufferAttachmentParameterivEXT function.
		/// </summary>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetNamedFramebufferAttachmentParameterEXT(UInt32 framebuffer, int attachment, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetNamedFramebufferAttachmentParameterivEXT != null)
					Delegates.pglGetNamedFramebufferAttachmentParameterivEXT(framebuffer, attachment, pname, @params);
				else
					throw new InvalidOperationException("binding point GetNamedFramebufferAttachmentParameterEXT cannot be found");
			}
			LogProc("glGetNamedFramebufferAttachmentParameterivEXT({0}, {1}, {2}, {3})", framebuffer, attachment, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetNamedProgramivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetNamedProgramEXT(UInt32 program, int target, int pname, [Out] out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetNamedProgramivEXT != null)
						Delegates.pglGetNamedProgramivEXT(program, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetNamedProgramEXT cannot be found");
				}
			}
			LogProc("glGetNamedProgramivEXT({0}, {1}, {2}, {3})", program, target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetNamedProgramLocalParameterdvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 4 element(s).
		/// </param>
		public static void GetNamedProgramLocalParameterEXT(UInt32 program, int target, UInt32 index, [Out] double[] @params) {
			unsafe {
				fixed (double* fp_params = @params)
				{
					if      (Delegates.pglGetNamedProgramLocalParameterdvEXT != null)
						Delegates.pglGetNamedProgramLocalParameterdvEXT(program, target, index, fp_params);
					else
						throw new InvalidOperationException("binding point GetNamedProgramLocalParameterEXT cannot be found");
				}
			}
			LogProc("glGetNamedProgramLocalParameterdvEXT({0}, {1}, {2}, {3})", program, target, index, @params);
		}

		/// <summary>
		/// Binding for glGetNamedProgramLocalParameterdvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		public static void GetNamedProgramLocalParameterEXT(UInt32 program, int target, UInt32 index, double* @params) {
			unsafe {
				if      (Delegates.pglGetNamedProgramLocalParameterdvEXT != null)
					Delegates.pglGetNamedProgramLocalParameterdvEXT(program, target, index, @params);
				else
					throw new InvalidOperationException("binding point GetNamedProgramLocalParameterEXT cannot be found");
			}
			LogProc("glGetNamedProgramLocalParameterdvEXT({0}, {1}, {2}, {3})", program, target, index, "@params");
		}
		

		/// <summary>
		/// Binding for glGetNamedProgramLocalParameterfvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 4 element(s).
		/// </param>
		public static void GetNamedProgramLocalParameterEXT(UInt32 program, int target, UInt32 index, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetNamedProgramLocalParameterfvEXT != null)
						Delegates.pglGetNamedProgramLocalParameterfvEXT(program, target, index, fp_params);
					else
						throw new InvalidOperationException("binding point GetNamedProgramLocalParameterEXT cannot be found");
				}
			}
			LogProc("glGetNamedProgramLocalParameterfvEXT({0}, {1}, {2}, {3})", program, target, index, @params);
		}

		/// <summary>
		/// Binding for glGetNamedProgramLocalParameterfvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void GetNamedProgramLocalParameterEXT(UInt32 program, int target, UInt32 index, float* @params) {
			unsafe {
				if      (Delegates.pglGetNamedProgramLocalParameterfvEXT != null)
					Delegates.pglGetNamedProgramLocalParameterfvEXT(program, target, index, @params);
				else
					throw new InvalidOperationException("binding point GetNamedProgramLocalParameterEXT cannot be found");
			}
			LogProc("glGetNamedProgramLocalParameterfvEXT({0}, {1}, {2}, {3})", program, target, index, "@params");
		}
		

		/// <summary>
		/// Binding for glGetNamedProgramLocalParameterIivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 4 element(s).
		/// </param>
		public static void GetNamedProgramLocalParameterIEXT(UInt32 program, int target, UInt32 index, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetNamedProgramLocalParameterIivEXT != null)
						Delegates.pglGetNamedProgramLocalParameterIivEXT(program, target, index, fp_params);
					else
						throw new InvalidOperationException("binding point GetNamedProgramLocalParameterIEXT cannot be found");
				}
			}
			LogProc("glGetNamedProgramLocalParameterIivEXT({0}, {1}, {2}, {3})", program, target, index, @params);
		}

		/// <summary>
		/// Binding for glGetNamedProgramLocalParameterIivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetNamedProgramLocalParameterIEXT(UInt32 program, int target, UInt32 index, int* @params) {
			unsafe {
				if      (Delegates.pglGetNamedProgramLocalParameterIivEXT != null)
					Delegates.pglGetNamedProgramLocalParameterIivEXT(program, target, index, @params);
				else
					throw new InvalidOperationException("binding point GetNamedProgramLocalParameterIEXT cannot be found");
			}
			LogProc("glGetNamedProgramLocalParameterIivEXT({0}, {1}, {2}, {3})", program, target, index, "@params");
		}
		

		/// <summary>
		/// Binding for glGetNamedProgramLocalParameterIuivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 4 element(s).
		/// </param>
		public static void GetNamedProgramLocalParameterIEXT(UInt32 program, int target, UInt32 index, [Out] UInt32[] @params) {
			unsafe {
				fixed (UInt32* fp_params = @params)
				{
					if      (Delegates.pglGetNamedProgramLocalParameterIuivEXT != null)
						Delegates.pglGetNamedProgramLocalParameterIuivEXT(program, target, index, fp_params);
					else
						throw new InvalidOperationException("binding point GetNamedProgramLocalParameterIEXT cannot be found");
				}
			}
			LogProc("glGetNamedProgramLocalParameterIuivEXT({0}, {1}, {2}, {3})", program, target, index, @params);
		}

		/// <summary>
		/// Binding for glGetNamedProgramLocalParameterIuivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void GetNamedProgramLocalParameterIEXT(UInt32 program, int target, UInt32 index, UInt32* @params) {
			unsafe {
				if      (Delegates.pglGetNamedProgramLocalParameterIuivEXT != null)
					Delegates.pglGetNamedProgramLocalParameterIuivEXT(program, target, index, @params);
				else
					throw new InvalidOperationException("binding point GetNamedProgramLocalParameterIEXT cannot be found");
			}
			LogProc("glGetNamedProgramLocalParameterIuivEXT({0}, {1}, {2}, {3})", program, target, index, "@params");
		}
		

		/// <summary>
		/// Binding for glGetNamedProgramStringEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="string">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetNamedProgramStringEXT(UInt32 program, int target, int pname, [Out] object @string) {
			GCHandle pp_string = GCHandle.Alloc(@string, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetNamedProgramStringEXT != null)
					Delegates.pglGetNamedProgramStringEXT(program, target, pname, pp_string.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetNamedProgramStringEXT cannot be found");
			} finally {
				pp_string.Free();
			}
			LogProc("glGetNamedProgramStringEXT({0}, {1}, {2}, {3})", program, target, pname, @string);
		}

		/// <summary>
		/// Binding for glGetNamedRenderbufferParameterivEXT function.
		/// </summary>
		/// <param name="renderbuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetNamedRenderbufferParameterEXT(UInt32 renderbuffer, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetNamedRenderbufferParameterivEXT != null)
						Delegates.pglGetNamedRenderbufferParameterivEXT(renderbuffer, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetNamedRenderbufferParameterEXT cannot be found");
				}
			}
			LogProc("glGetNamedRenderbufferParameterivEXT({0}, {1}, {2})", renderbuffer, pname, @params);
		}

		/// <summary>
		/// Binding for glGetNamedRenderbufferParameterivEXT function.
		/// </summary>
		/// <param name="renderbuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetNamedRenderbufferParameterEXT(UInt32 renderbuffer, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetNamedRenderbufferParameterivEXT != null)
					Delegates.pglGetNamedRenderbufferParameterivEXT(renderbuffer, pname, @params);
				else
					throw new InvalidOperationException("binding point GetNamedRenderbufferParameterEXT cannot be found");
			}
			LogProc("glGetNamedRenderbufferParameterivEXT({0}, {1}, {2})", renderbuffer, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetPointerIndexedvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetPointerIndexedEXT(int target, UInt32 index, [Out] IntPtr[] data) {
			unsafe {
				fixed (IntPtr* fp_data = data)
				{
					if      (Delegates.pglGetPointerIndexedvEXT != null)
						Delegates.pglGetPointerIndexedvEXT(target, index, fp_data);
					else
						throw new InvalidOperationException("binding point GetPointerIndexedEXT cannot be found");
				}
			}
			LogProc("glGetPointerIndexedvEXT({0}, {1}, {2})", target, index, data);
		}

		/// <summary>
		/// Binding for glGetPointervEXT function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetPointerEXT(int pname, [Out] out IntPtr @params) {
			unsafe {
				fixed (IntPtr* fp_params = &@params)
				{
					if      (Delegates.pglGetPointervEXT != null)
						Delegates.pglGetPointervEXT(pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetPointerEXT cannot be found");
				}
			}
			LogProc("glGetPointervEXT({0}, {1})", pname, @params);
		}

		/// <summary>
		/// Binding for glGetQueryObjecti64vEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int64*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryObjecti64vEXT(UInt32 id, int pname, [Out] Int64[] @params) {
			unsafe {
				fixed (Int64* fp_params = @params)
				{
					if      (Delegates.pglGetQueryObjecti64vEXT != null)
						Delegates.pglGetQueryObjecti64vEXT(id, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryObjecti64vEXT cannot be found");
				}
			}
			LogProc("glGetQueryObjecti64vEXT({0}, {1}, {2})", id, pname, @params);
		}

		/// <summary>
		/// Binding for glGetQueryObjecti64vEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int64"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryObjecti64vEXT(UInt32 id, int pname, out Int64 @params) {
			unsafe {
				fixed (Int64* fp_params = &@params)
				{
					if      (Delegates.pglGetQueryObjecti64vEXT != null)
						Delegates.pglGetQueryObjecti64vEXT(id, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryObjecti64vEXT cannot be found");
				}
			}
			LogProc("glGetQueryObjecti64vEXT({0}, {1}, {2})", id, pname, @params);
		}
		

		/// <summary>
		/// Binding for glGetQueryObjectui64vEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt64*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryObjectui64vEXT(UInt32 id, int pname, [Out] UInt64[] @params) {
			unsafe {
				fixed (UInt64* fp_params = @params)
				{
					if      (Delegates.pglGetQueryObjectui64vEXT != null)
						Delegates.pglGetQueryObjectui64vEXT(id, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryObjectui64vEXT cannot be found");
				}
			}
			LogProc("glGetQueryObjectui64vEXT({0}, {1}, {2})", id, pname, @params);
		}

		/// <summary>
		/// Binding for glGetQueryObjectui64vEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt64"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryObjectui64vEXT(UInt32 id, int pname, out UInt64 @params) {
			unsafe {
				fixed (UInt64* fp_params = &@params)
				{
					if      (Delegates.pglGetQueryObjectui64vEXT != null)
						Delegates.pglGetQueryObjectui64vEXT(id, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryObjectui64vEXT cannot be found");
				}
			}
			LogProc("glGetQueryObjectui64vEXT({0}, {1}, {2})", id, pname, @params);
		}
		

		/// <summary>
		/// Binding for glGetRenderbufferParameterivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetRenderbufferParameterEXT(int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetRenderbufferParameterivEXT != null)
						Delegates.pglGetRenderbufferParameterivEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetRenderbufferParameterEXT cannot be found");
				}
			}
			LogProc("glGetRenderbufferParameterivEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetRenderbufferParameterivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetRenderbufferParameterEXT(int target, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetRenderbufferParameterivEXT != null)
						Delegates.pglGetRenderbufferParameterivEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetRenderbufferParameterEXT cannot be found");
				}
			}
			LogProc("glGetRenderbufferParameterivEXT({0}, {1}, {2})", target, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetRenderbufferParameterivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetRenderbufferParameterEXT(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetRenderbufferParameterivEXT != null)
					Delegates.pglGetRenderbufferParameterivEXT(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetRenderbufferParameterEXT cannot be found");
			}
			LogProc("glGetRenderbufferParameterivEXT({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetSeparableFilterEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="row">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="column">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="span">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetSeparableFilterEXT(int target, int format, int type, [Out] object row, [Out] object column, [Out] object span) {
			GCHandle pp_row = GCHandle.Alloc(row, GCHandleType.Pinned);
			GCHandle pp_column = GCHandle.Alloc(column, GCHandleType.Pinned);
			GCHandle pp_span = GCHandle.Alloc(span, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetSeparableFilterEXT != null)
					Delegates.pglGetSeparableFilterEXT(target, format, type, pp_row.AddrOfPinnedObject(), pp_column.AddrOfPinnedObject(), pp_span.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetSeparableFilterEXT cannot be found");
			} finally {
				pp_row.Free();
				pp_column.Free();
				pp_span.Free();
			}
			LogProc("glGetSeparableFilterEXT({0}, {1}, {2}, {3}, {4}, {5})", target, format, type, row, column, span);
		}

		/// <summary>
		/// Binding for glGetTexParameterIivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetTexParameterIEXT(int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetTexParameterIivEXT != null)
						Delegates.pglGetTexParameterIivEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexParameterIEXT cannot be found");
				}
			}
			LogProc("glGetTexParameterIivEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTexParameterIivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetTexParameterIEXT(int target, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetTexParameterIivEXT != null)
						Delegates.pglGetTexParameterIivEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexParameterIEXT cannot be found");
				}
			}
			LogProc("glGetTexParameterIivEXT({0}, {1}, {2})", target, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetTexParameterIivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetTexParameterIEXT(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetTexParameterIivEXT != null)
					Delegates.pglGetTexParameterIivEXT(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTexParameterIEXT cannot be found");
			}
			LogProc("glGetTexParameterIivEXT({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTexParameterIuivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetTexParameterIEXT(int target, int pname, [Out] UInt32[] @params) {
			unsafe {
				fixed (UInt32* fp_params = @params)
				{
					if      (Delegates.pglGetTexParameterIuivEXT != null)
						Delegates.pglGetTexParameterIuivEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexParameterIEXT cannot be found");
				}
			}
			LogProc("glGetTexParameterIuivEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTexParameterIuivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetTexParameterIEXT(int target, int pname, out UInt32 @params) {
			unsafe {
				fixed (UInt32* fp_params = &@params)
				{
					if      (Delegates.pglGetTexParameterIuivEXT != null)
						Delegates.pglGetTexParameterIuivEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexParameterIEXT cannot be found");
				}
			}
			LogProc("glGetTexParameterIuivEXT({0}, {1}, {2})", target, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetTexParameterIuivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetTexParameterIEXT(int target, int pname, UInt32* @params) {
			unsafe {
				if      (Delegates.pglGetTexParameterIuivEXT != null)
					Delegates.pglGetTexParameterIuivEXT(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTexParameterIEXT cannot be found");
			}
			LogProc("glGetTexParameterIuivEXT({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTextureImageEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetTextureImageEXT(UInt32 texture, int target, int level, int format, int type, [Out] object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetTextureImageEXT != null)
					Delegates.pglGetTextureImageEXT(texture, target, level, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetTextureImageEXT cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glGetTextureImageEXT({0}, {1}, {2}, {3}, {4}, {5})", texture, target, level, format, type, pixels);
		}

		/// <summary>
		/// Binding for glGetTextureLevelParameterfvEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetTextureLevelParameterEXT(UInt32 texture, int target, int level, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetTextureLevelParameterfvEXT != null)
						Delegates.pglGetTextureLevelParameterfvEXT(texture, target, level, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTextureLevelParameterEXT cannot be found");
				}
			}
			LogProc("glGetTextureLevelParameterfvEXT({0}, {1}, {2}, {3}, {4})", texture, target, level, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTextureLevelParameterfvEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void GetTextureLevelParameterEXT(UInt32 texture, int target, int level, int pname, out float @params) {
			unsafe {
				fixed (float* fp_params = &@params)
				{
					if      (Delegates.pglGetTextureLevelParameterfvEXT != null)
						Delegates.pglGetTextureLevelParameterfvEXT(texture, target, level, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTextureLevelParameterEXT cannot be found");
				}
			}
			LogProc("glGetTextureLevelParameterfvEXT({0}, {1}, {2}, {3}, {4})", texture, target, level, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetTextureLevelParameterfvEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void GetTextureLevelParameterEXT(UInt32 texture, int target, int level, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetTextureLevelParameterfvEXT != null)
					Delegates.pglGetTextureLevelParameterfvEXT(texture, target, level, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTextureLevelParameterEXT cannot be found");
			}
			LogProc("glGetTextureLevelParameterfvEXT({0}, {1}, {2}, {3}, {4})", texture, target, level, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTextureLevelParameterivEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetTextureLevelParameterEXT(UInt32 texture, int target, int level, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetTextureLevelParameterivEXT != null)
						Delegates.pglGetTextureLevelParameterivEXT(texture, target, level, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTextureLevelParameterEXT cannot be found");
				}
			}
			LogProc("glGetTextureLevelParameterivEXT({0}, {1}, {2}, {3}, {4})", texture, target, level, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTextureLevelParameterivEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetTextureLevelParameterEXT(UInt32 texture, int target, int level, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetTextureLevelParameterivEXT != null)
						Delegates.pglGetTextureLevelParameterivEXT(texture, target, level, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTextureLevelParameterEXT cannot be found");
				}
			}
			LogProc("glGetTextureLevelParameterivEXT({0}, {1}, {2}, {3}, {4})", texture, target, level, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetTextureLevelParameterivEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetTextureLevelParameterEXT(UInt32 texture, int target, int level, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetTextureLevelParameterivEXT != null)
					Delegates.pglGetTextureLevelParameterivEXT(texture, target, level, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTextureLevelParameterEXT cannot be found");
			}
			LogProc("glGetTextureLevelParameterivEXT({0}, {1}, {2}, {3}, {4})", texture, target, level, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTextureParameterfvEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetTextureParameterEXT(UInt32 texture, int target, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetTextureParameterfvEXT != null)
						Delegates.pglGetTextureParameterfvEXT(texture, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTextureParameterEXT cannot be found");
				}
			}
			LogProc("glGetTextureParameterfvEXT({0}, {1}, {2}, {3})", texture, target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTextureParameterfvEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void GetTextureParameterEXT(UInt32 texture, int target, int pname, out float @params) {
			unsafe {
				fixed (float* fp_params = &@params)
				{
					if      (Delegates.pglGetTextureParameterfvEXT != null)
						Delegates.pglGetTextureParameterfvEXT(texture, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTextureParameterEXT cannot be found");
				}
			}
			LogProc("glGetTextureParameterfvEXT({0}, {1}, {2}, {3})", texture, target, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetTextureParameterfvEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void GetTextureParameterEXT(UInt32 texture, int target, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetTextureParameterfvEXT != null)
					Delegates.pglGetTextureParameterfvEXT(texture, target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTextureParameterEXT cannot be found");
			}
			LogProc("glGetTextureParameterfvEXT({0}, {1}, {2}, {3})", texture, target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTextureParameterIivEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetTextureParameterIEXT(UInt32 texture, int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetTextureParameterIivEXT != null)
						Delegates.pglGetTextureParameterIivEXT(texture, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTextureParameterIEXT cannot be found");
				}
			}
			LogProc("glGetTextureParameterIivEXT({0}, {1}, {2}, {3})", texture, target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTextureParameterIivEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetTextureParameterIEXT(UInt32 texture, int target, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetTextureParameterIivEXT != null)
						Delegates.pglGetTextureParameterIivEXT(texture, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTextureParameterIEXT cannot be found");
				}
			}
			LogProc("glGetTextureParameterIivEXT({0}, {1}, {2}, {3})", texture, target, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetTextureParameterIivEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetTextureParameterIEXT(UInt32 texture, int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetTextureParameterIivEXT != null)
					Delegates.pglGetTextureParameterIivEXT(texture, target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTextureParameterIEXT cannot be found");
			}
			LogProc("glGetTextureParameterIivEXT({0}, {1}, {2}, {3})", texture, target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTextureParameterIuivEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetTextureParameterIEXT(UInt32 texture, int target, int pname, [Out] UInt32[] @params) {
			unsafe {
				fixed (UInt32* fp_params = @params)
				{
					if      (Delegates.pglGetTextureParameterIuivEXT != null)
						Delegates.pglGetTextureParameterIuivEXT(texture, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTextureParameterIEXT cannot be found");
				}
			}
			LogProc("glGetTextureParameterIuivEXT({0}, {1}, {2}, {3})", texture, target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTextureParameterIuivEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void GetTextureParameterIEXT(UInt32 texture, int target, int pname, out UInt32 @params) {
			unsafe {
				fixed (UInt32* fp_params = &@params)
				{
					if      (Delegates.pglGetTextureParameterIuivEXT != null)
						Delegates.pglGetTextureParameterIuivEXT(texture, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTextureParameterIEXT cannot be found");
				}
			}
			LogProc("glGetTextureParameterIuivEXT({0}, {1}, {2}, {3})", texture, target, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetTextureParameterIuivEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void GetTextureParameterIEXT(UInt32 texture, int target, int pname, UInt32* @params) {
			unsafe {
				if      (Delegates.pglGetTextureParameterIuivEXT != null)
					Delegates.pglGetTextureParameterIuivEXT(texture, target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTextureParameterIEXT cannot be found");
			}
			LogProc("glGetTextureParameterIuivEXT({0}, {1}, {2}, {3})", texture, target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTextureParameterivEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetTextureParameterEXT(UInt32 texture, int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetTextureParameterivEXT != null)
						Delegates.pglGetTextureParameterivEXT(texture, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTextureParameterEXT cannot be found");
				}
			}
			LogProc("glGetTextureParameterivEXT({0}, {1}, {2}, {3})", texture, target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTextureParameterivEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetTextureParameterEXT(UInt32 texture, int target, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetTextureParameterivEXT != null)
						Delegates.pglGetTextureParameterivEXT(texture, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTextureParameterEXT cannot be found");
				}
			}
			LogProc("glGetTextureParameterivEXT({0}, {1}, {2}, {3})", texture, target, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetTextureParameterivEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void GetTextureParameterEXT(UInt32 texture, int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetTextureParameterivEXT != null)
					Delegates.pglGetTextureParameterivEXT(texture, target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTextureParameterEXT cannot be found");
			}
			LogProc("glGetTextureParameterivEXT({0}, {1}, {2}, {3})", texture, target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTransformFeedbackVaryingEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetTransformFeedbackVaryingEXT(UInt32 program, UInt32 index, Int32 bufSize, [Out] out Int32 length, [Out] out Int32 size, [Out] out int type, [Out] StringBuilder name) {
			unsafe {
				fixed (Int32* fp_length = &length)
				fixed (Int32* fp_size = &size)
				fixed (int* fp_type = &type)
				{
					if      (Delegates.pglGetTransformFeedbackVaryingEXT != null)
						Delegates.pglGetTransformFeedbackVaryingEXT(program, index, bufSize, fp_length, fp_size, fp_type, name);
					else
						throw new InvalidOperationException("binding point GetTransformFeedbackVaryingEXT cannot be found");
				}
			}
			LogProc("glGetTransformFeedbackVaryingEXT({0}, {1}, {2}, {3}, {4}, {5}, {6})", program, index, bufSize, length, size, type, name);
		}

		/// <summary>
		/// Binding for glGetUniformBufferSizeEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static int GetUniformBufferSizeEXT(UInt32 program, int location) {
			int retvalue;
			if      (Delegates.pglGetUniformBufferSizeEXT != null)
				retvalue = (Delegates.pglGetUniformBufferSizeEXT(program, location));
			else
				throw new InvalidOperationException("binding point GetUniformBufferSizeEXT cannot be found");
			LogProc("glGetUniformBufferSizeEXT({0}, {1}) = {2}", program, location, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetUniformOffsetEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static IntPtr GetUniformOffsetEXT(UInt32 program, int location) {
			IntPtr retvalue;
			if      (Delegates.pglGetUniformOffsetEXT != null)
				retvalue = (Delegates.pglGetUniformOffsetEXT(program, location));
			else
				throw new InvalidOperationException("binding point GetUniformOffsetEXT cannot be found");
			LogProc("glGetUniformOffsetEXT({0}, {1}) = {2}", program, location, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetUniformuivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetUniformEXT(UInt32 program, int location, [Out] UInt32[] @params) {
			unsafe {
				fixed (UInt32* fp_params = @params)
				{
					if      (Delegates.pglGetUniformuivEXT != null)
						Delegates.pglGetUniformuivEXT(program, location, fp_params);
					else
						throw new InvalidOperationException("binding point GetUniformEXT cannot be found");
				}
			}
			LogProc("glGetUniformuivEXT({0}, {1}, {2})", program, location, @params);
		}

		/// <summary>
		/// Binding for glGetUniformuivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetUniformEXT(UInt32 program, int location, UInt32* @params) {
			unsafe {
				if      (Delegates.pglGetUniformuivEXT != null)
					Delegates.pglGetUniformuivEXT(program, location, @params);
				else
					throw new InvalidOperationException("binding point GetUniformEXT cannot be found");
			}
			LogProc("glGetUniformuivEXT({0}, {1}, {2})", program, location, "@params");
		}
		

		/// <summary>
		/// Binding for glGetVariantBooleanvEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Boolean*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetVariantBooleanEXT(UInt32 id, int value, [Out] bool[] data) {
			unsafe {
				fixed (bool* fp_data = data)
				{
					if      (Delegates.pglGetVariantBooleanvEXT != null)
						Delegates.pglGetVariantBooleanvEXT(id, value, fp_data);
					else
						throw new InvalidOperationException("binding point GetVariantBooleanEXT cannot be found");
				}
			}
			LogProc("glGetVariantBooleanvEXT({0}, {1}, {2})", id, value, data);
		}

		/// <summary>
		/// Binding for glGetVariantFloatvEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetVariantFloatEXT(UInt32 id, int value, [Out] float[] data) {
			unsafe {
				fixed (float* fp_data = data)
				{
					if      (Delegates.pglGetVariantFloatvEXT != null)
						Delegates.pglGetVariantFloatvEXT(id, value, fp_data);
					else
						throw new InvalidOperationException("binding point GetVariantFloatEXT cannot be found");
				}
			}
			LogProc("glGetVariantFloatvEXT({0}, {1}, {2})", id, value, data);
		}

		/// <summary>
		/// Binding for glGetVariantFloatvEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetVariantFloatEXT(UInt32 id, int value, float* data) {
			unsafe {
				if      (Delegates.pglGetVariantFloatvEXT != null)
					Delegates.pglGetVariantFloatvEXT(id, value, data);
				else
					throw new InvalidOperationException("binding point GetVariantFloatEXT cannot be found");
			}
			LogProc("glGetVariantFloatvEXT({0}, {1}, {2})", id, value, "data");
		}
		

		/// <summary>
		/// Binding for glGetVariantIntegervEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetVariantIntegerEXT(UInt32 id, int value, [Out] int[] data) {
			unsafe {
				fixed (int* fp_data = data)
				{
					if      (Delegates.pglGetVariantIntegervEXT != null)
						Delegates.pglGetVariantIntegervEXT(id, value, fp_data);
					else
						throw new InvalidOperationException("binding point GetVariantIntegerEXT cannot be found");
				}
			}
			LogProc("glGetVariantIntegervEXT({0}, {1}, {2})", id, value, data);
		}

		/// <summary>
		/// Binding for glGetVariantIntegervEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetVariantIntegerEXT(UInt32 id, int value, int* data) {
			unsafe {
				if      (Delegates.pglGetVariantIntegervEXT != null)
					Delegates.pglGetVariantIntegervEXT(id, value, data);
				else
					throw new InvalidOperationException("binding point GetVariantIntegerEXT cannot be found");
			}
			LogProc("glGetVariantIntegervEXT({0}, {1}, {2})", id, value, "data");
		}
		

		/// <summary>
		/// Binding for glGetVariantPointervEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetVariantPointerEXT(UInt32 id, int value, [Out] IntPtr[] data) {
			unsafe {
				fixed (IntPtr* fp_data = data)
				{
					if      (Delegates.pglGetVariantPointervEXT != null)
						Delegates.pglGetVariantPointervEXT(id, value, fp_data);
					else
						throw new InvalidOperationException("binding point GetVariantPointerEXT cannot be found");
				}
			}
			LogProc("glGetVariantPointervEXT({0}, {1}, {2})", id, value, data);
		}

		/// <summary>
		/// Binding for glGetVertexAttribIivEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetVertexAttribIEXT(UInt32 index, int pname, [Out] out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetVertexAttribIivEXT != null)
						Delegates.pglGetVertexAttribIivEXT(index, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetVertexAttribIEXT cannot be found");
				}
			}
			LogProc("glGetVertexAttribIivEXT({0}, {1}, {2})", index, pname, @params);
		}

		/// <summary>
		/// Binding for glGetVertexAttribIuivEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		public static void GetVertexAttribIEXT(UInt32 index, int pname, [Out] out UInt32 @params) {
			unsafe {
				fixed (UInt32* fp_params = &@params)
				{
					if      (Delegates.pglGetVertexAttribIuivEXT != null)
						Delegates.pglGetVertexAttribIuivEXT(index, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetVertexAttribIEXT cannot be found");
				}
			}
			LogProc("glGetVertexAttribIuivEXT({0}, {1}, {2})", index, pname, @params);
		}

		/// <summary>
		/// Binding for glGetVertexAttribLdvEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetVertexAttribLEXT(UInt32 index, int pname, [Out] double[] @params) {
			unsafe {
				fixed (double* fp_params = @params)
				{
					if      (Delegates.pglGetVertexAttribLdvEXT != null)
						Delegates.pglGetVertexAttribLdvEXT(index, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetVertexAttribLEXT cannot be found");
				}
			}
			LogProc("glGetVertexAttribLdvEXT({0}, {1}, {2})", index, pname, @params);
		}

		/// <summary>
		/// Binding for glGetVertexAttribLdvEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetVertexAttribLEXT(UInt32 index, int pname, out double @params) {
			unsafe {
				fixed (double* fp_params = &@params)
				{
					if      (Delegates.pglGetVertexAttribLdvEXT != null)
						Delegates.pglGetVertexAttribLdvEXT(index, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetVertexAttribLEXT cannot be found");
				}
			}
			LogProc("glGetVertexAttribLdvEXT({0}, {1}, {2})", index, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetVertexAttribLdvEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetVertexAttribLEXT(UInt32 index, int pname, double* @params) {
			unsafe {
				if      (Delegates.pglGetVertexAttribLdvEXT != null)
					Delegates.pglGetVertexAttribLdvEXT(index, pname, @params);
				else
					throw new InvalidOperationException("binding point GetVertexAttribLEXT cannot be found");
			}
			LogProc("glGetVertexAttribLdvEXT({0}, {1}, {2})", index, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glHistogramEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="sink">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void HistogramEXT(int target, Int32 width, int internalformat, bool sink) {
			if      (Delegates.pglHistogramEXT != null)
				Delegates.pglHistogramEXT(target, width, internalformat, sink);
			else
				throw new InvalidOperationException("binding point HistogramEXT cannot be found");
			LogProc("glHistogramEXT({0}, {1}, {2}, {3})", target, width, internalformat, sink);
		}

		/// <summary>
		/// Binding for glImportSyncEXT function.
		/// </summary>
		/// <param name="external_sync_type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="external_sync">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="flags">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.2
		public static int ImportSyncEXT(int external_sync_type, IntPtr external_sync, uint flags) {
			int retvalue;
			if      (Delegates.pglImportSyncEXT != null)
				retvalue = (Delegates.pglImportSyncEXT(external_sync_type, external_sync, flags));
			else
				throw new InvalidOperationException("binding point ImportSyncEXT cannot be found");
			LogProc("glImportSyncEXT({0}, {1}, {2}) = {3}", external_sync_type, external_sync, flags, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIndexFuncEXT function.
		/// </summary>
		/// <param name="func">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ref">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void IndexFuncEXT(int func, float @ref) {
			if      (Delegates.pglIndexFuncEXT != null)
				Delegates.pglIndexFuncEXT(func, @ref);
			else
				throw new InvalidOperationException("binding point IndexFuncEXT cannot be found");
			LogProc("glIndexFuncEXT({0}, {1})", func, @ref);
		}

		/// <summary>
		/// Binding for glIndexMaterialEXT function.
		/// </summary>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void IndexMaterialEXT(int face, int mode) {
			if      (Delegates.pglIndexMaterialEXT != null)
				Delegates.pglIndexMaterialEXT(face, mode);
			else
				throw new InvalidOperationException("binding point IndexMaterialEXT cannot be found");
			LogProc("glIndexMaterialEXT({0}, {1})", face, mode);
		}

		/// <summary>
		/// Binding for glIndexPointerEXT function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void IndexPointerEXT(int type, Int32 stride, Int32 count, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglIndexPointerEXT != null)
					Delegates.pglIndexPointerEXT(type, stride, count, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point IndexPointerEXT cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glIndexPointerEXT({0}, {1}, {2}, {3})", type, stride, count, pointer);
		}

		/// <summary>
		/// Binding for glInsertComponentEXT function.
		/// </summary>
		/// <param name="res">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="src">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="num">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void InsertComponentEXT(UInt32 res, UInt32 src, UInt32 num) {
			if      (Delegates.pglInsertComponentEXT != null)
				Delegates.pglInsertComponentEXT(res, src, num);
			else
				throw new InvalidOperationException("binding point InsertComponentEXT cannot be found");
			LogProc("glInsertComponentEXT({0}, {1}, {2})", res, src, num);
		}

		/// <summary>
		/// Binding for glIsEnabledIndexedEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static bool IsEnabledIndexedEXT(int target, UInt32 index) {
			bool retvalue;
			if      (Delegates.pglIsEnabledIndexedEXT != null)
				retvalue = (Delegates.pglIsEnabledIndexedEXT(target, index));
			else
				throw new InvalidOperationException("binding point IsEnabledIndexedEXT cannot be found");
			LogProc("glIsEnabledIndexedEXT({0}, {1}) = {2}", target, index, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsFramebufferEXT function.
		/// </summary>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static bool IsFramebufferEXT(UInt32 framebuffer) {
			bool retvalue;
			if      (Delegates.pglIsFramebufferEXT != null)
				retvalue = (Delegates.pglIsFramebufferEXT(framebuffer));
			else
				throw new InvalidOperationException("binding point IsFramebufferEXT cannot be found");
			LogProc("glIsFramebufferEXT({0}) = {1}", framebuffer, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsRenderbufferEXT function.
		/// </summary>
		/// <param name="renderbuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static bool IsRenderbufferEXT(UInt32 renderbuffer) {
			bool retvalue;
			if      (Delegates.pglIsRenderbufferEXT != null)
				retvalue = (Delegates.pglIsRenderbufferEXT(renderbuffer));
			else
				throw new InvalidOperationException("binding point IsRenderbufferEXT cannot be found");
			LogProc("glIsRenderbufferEXT({0}) = {1}", renderbuffer, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsTextureEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static bool IsTextureEXT(UInt32 texture) {
			bool retvalue;
			if      (Delegates.pglIsTextureEXT != null)
				retvalue = (Delegates.pglIsTextureEXT(texture));
			else
				throw new InvalidOperationException("binding point IsTextureEXT cannot be found");
			LogProc("glIsTextureEXT({0}) = {1}", texture, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsVariantEnabledEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="cap">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static bool IsVariantEnabledEXT(UInt32 id, int cap) {
			bool retvalue;
			if      (Delegates.pglIsVariantEnabledEXT != null)
				retvalue = (Delegates.pglIsVariantEnabledEXT(id, cap));
			else
				throw new InvalidOperationException("binding point IsVariantEnabledEXT cannot be found");
			LogProc("glIsVariantEnabledEXT({0}, {1}) = {2}", id, cap, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glLockArraysEXT function.
		/// </summary>
		/// <param name="first">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void LockArraysEXT(int first, Int32 count) {
			if      (Delegates.pglLockArraysEXT != null)
				Delegates.pglLockArraysEXT(first, count);
			else
				throw new InvalidOperationException("binding point LockArraysEXT cannot be found");
			LogProc("glLockArraysEXT({0}, {1})", first, count);
		}

		/// <summary>
		/// Binding for glMapNamedBufferEXT function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="access">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static IntPtr MapNamedBufferEXT(UInt32 buffer, int access) {
			IntPtr retvalue;
			if      (Delegates.pglMapNamedBufferEXT != null)
				retvalue = (Delegates.pglMapNamedBufferEXT(buffer, access));
			else
				throw new InvalidOperationException("binding point MapNamedBufferEXT cannot be found");
			LogProc("glMapNamedBufferEXT({0}, {1}) = {2}", buffer, access, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glMapNamedBufferRangeEXT function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="access">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static IntPtr MapNamedBufferRangeEXT(UInt32 buffer, IntPtr offset, UInt32 length, uint access) {
			IntPtr retvalue;
			if      (Delegates.pglMapNamedBufferRangeEXT != null)
				retvalue = (Delegates.pglMapNamedBufferRangeEXT(buffer, offset, length, access));
			else
				throw new InvalidOperationException("binding point MapNamedBufferRangeEXT cannot be found");
			LogProc("glMapNamedBufferRangeEXT({0}, {1}, {2}, {3}) = {4}", buffer, offset, length, access, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glMatrixFrustumEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="left">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="right">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="bottom">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="top">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="zNear">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="zFar">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		public static void MatrixFrustumEXT(int mode, double left, double right, double bottom, double top, double zNear, double zFar) {
			if      (Delegates.pglMatrixFrustumEXT != null)
				Delegates.pglMatrixFrustumEXT(mode, left, right, bottom, top, zNear, zFar);
			else
				throw new InvalidOperationException("binding point MatrixFrustumEXT cannot be found");
			LogProc("glMatrixFrustumEXT({0}, {1}, {2}, {3}, {4}, {5}, {6})", mode, left, right, bottom, top, zNear, zFar);
		}

		/// <summary>
		/// Binding for glMatrixLoaddEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="m">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		public static void MatrixLoadEXT(int mode, double[] m) {
			unsafe {
				fixed (double* fp_m = m)
				{
					if      (Delegates.pglMatrixLoaddEXT != null)
						Delegates.pglMatrixLoaddEXT(mode, fp_m);
					else
						throw new InvalidOperationException("binding point MatrixLoadEXT cannot be found");
				}
			}
			LogProc("glMatrixLoaddEXT({0}, {1})", mode, m);
		}

		/// <summary>
		/// Binding for glMatrixLoaddEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="m">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		public static void MatrixLoadEXT(int mode, double* m) {
			unsafe {
				if      (Delegates.pglMatrixLoaddEXT != null)
					Delegates.pglMatrixLoaddEXT(mode, m);
				else
					throw new InvalidOperationException("binding point MatrixLoadEXT cannot be found");
			}
			LogProc("glMatrixLoaddEXT({0}, {1})", mode, "m");
		}
		

		/// <summary>
		/// Binding for glMatrixLoadfEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="m">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void MatrixLoadEXT(int mode, float[] m) {
			unsafe {
				fixed (float* fp_m = m)
				{
					if      (Delegates.pglMatrixLoadfEXT != null)
						Delegates.pglMatrixLoadfEXT(mode, fp_m);
					else
						throw new InvalidOperationException("binding point MatrixLoadEXT cannot be found");
				}
			}
			LogProc("glMatrixLoadfEXT({0}, {1})", mode, m);
		}

		/// <summary>
		/// Binding for glMatrixLoadfEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="m">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void MatrixLoadEXT(int mode, float* m) {
			unsafe {
				if      (Delegates.pglMatrixLoadfEXT != null)
					Delegates.pglMatrixLoadfEXT(mode, m);
				else
					throw new InvalidOperationException("binding point MatrixLoadEXT cannot be found");
			}
			LogProc("glMatrixLoadfEXT({0}, {1})", mode, "m");
		}
		

		/// <summary>
		/// Binding for glMatrixLoadIdentityEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void MatrixLoadIdentityEXT(int mode) {
			if      (Delegates.pglMatrixLoadIdentityEXT != null)
				Delegates.pglMatrixLoadIdentityEXT(mode);
			else
				throw new InvalidOperationException("binding point MatrixLoadIdentityEXT cannot be found");
			LogProc("glMatrixLoadIdentityEXT({0})", mode);
		}

		/// <summary>
		/// Binding for glMatrixLoadTransposedEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="m">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		public static void MatrixLoadTransposeEXT(int mode, double[] m) {
			unsafe {
				fixed (double* fp_m = m)
				{
					if      (Delegates.pglMatrixLoadTransposedEXT != null)
						Delegates.pglMatrixLoadTransposedEXT(mode, fp_m);
					else
						throw new InvalidOperationException("binding point MatrixLoadTransposeEXT cannot be found");
				}
			}
			LogProc("glMatrixLoadTransposedEXT({0}, {1})", mode, m);
		}

		/// <summary>
		/// Binding for glMatrixLoadTransposedEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="m">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		public static void MatrixLoadTransposeEXT(int mode, double* m) {
			unsafe {
				if      (Delegates.pglMatrixLoadTransposedEXT != null)
					Delegates.pglMatrixLoadTransposedEXT(mode, m);
				else
					throw new InvalidOperationException("binding point MatrixLoadTransposeEXT cannot be found");
			}
			LogProc("glMatrixLoadTransposedEXT({0}, {1})", mode, "m");
		}
		

		/// <summary>
		/// Binding for glMatrixLoadTransposefEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="m">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void MatrixLoadTransposeEXT(int mode, float[] m) {
			unsafe {
				fixed (float* fp_m = m)
				{
					if      (Delegates.pglMatrixLoadTransposefEXT != null)
						Delegates.pglMatrixLoadTransposefEXT(mode, fp_m);
					else
						throw new InvalidOperationException("binding point MatrixLoadTransposeEXT cannot be found");
				}
			}
			LogProc("glMatrixLoadTransposefEXT({0}, {1})", mode, m);
		}

		/// <summary>
		/// Binding for glMatrixLoadTransposefEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="m">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void MatrixLoadTransposeEXT(int mode, float* m) {
			unsafe {
				if      (Delegates.pglMatrixLoadTransposefEXT != null)
					Delegates.pglMatrixLoadTransposefEXT(mode, m);
				else
					throw new InvalidOperationException("binding point MatrixLoadTransposeEXT cannot be found");
			}
			LogProc("glMatrixLoadTransposefEXT({0}, {1})", mode, "m");
		}
		

		/// <summary>
		/// Binding for glMatrixMultdEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="m">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		public static void MatrixMultEXT(int mode, double[] m) {
			unsafe {
				fixed (double* fp_m = m)
				{
					if      (Delegates.pglMatrixMultdEXT != null)
						Delegates.pglMatrixMultdEXT(mode, fp_m);
					else
						throw new InvalidOperationException("binding point MatrixMultEXT cannot be found");
				}
			}
			LogProc("glMatrixMultdEXT({0}, {1})", mode, m);
		}

		/// <summary>
		/// Binding for glMatrixMultdEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="m">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		public static void MatrixMultEXT(int mode, double* m) {
			unsafe {
				if      (Delegates.pglMatrixMultdEXT != null)
					Delegates.pglMatrixMultdEXT(mode, m);
				else
					throw new InvalidOperationException("binding point MatrixMultEXT cannot be found");
			}
			LogProc("glMatrixMultdEXT({0}, {1})", mode, "m");
		}
		

		/// <summary>
		/// Binding for glMatrixMultfEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="m">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void MatrixMultEXT(int mode, float[] m) {
			unsafe {
				fixed (float* fp_m = m)
				{
					if      (Delegates.pglMatrixMultfEXT != null)
						Delegates.pglMatrixMultfEXT(mode, fp_m);
					else
						throw new InvalidOperationException("binding point MatrixMultEXT cannot be found");
				}
			}
			LogProc("glMatrixMultfEXT({0}, {1})", mode, m);
		}

		/// <summary>
		/// Binding for glMatrixMultfEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="m">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void MatrixMultEXT(int mode, float* m) {
			unsafe {
				if      (Delegates.pglMatrixMultfEXT != null)
					Delegates.pglMatrixMultfEXT(mode, m);
				else
					throw new InvalidOperationException("binding point MatrixMultEXT cannot be found");
			}
			LogProc("glMatrixMultfEXT({0}, {1})", mode, "m");
		}
		

		/// <summary>
		/// Binding for glMatrixMultTransposedEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="m">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		public static void MatrixMultTransposeEXT(int mode, double[] m) {
			unsafe {
				fixed (double* fp_m = m)
				{
					if      (Delegates.pglMatrixMultTransposedEXT != null)
						Delegates.pglMatrixMultTransposedEXT(mode, fp_m);
					else
						throw new InvalidOperationException("binding point MatrixMultTransposeEXT cannot be found");
				}
			}
			LogProc("glMatrixMultTransposedEXT({0}, {1})", mode, m);
		}

		/// <summary>
		/// Binding for glMatrixMultTransposedEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="m">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		public static void MatrixMultTransposeEXT(int mode, double* m) {
			unsafe {
				if      (Delegates.pglMatrixMultTransposedEXT != null)
					Delegates.pglMatrixMultTransposedEXT(mode, m);
				else
					throw new InvalidOperationException("binding point MatrixMultTransposeEXT cannot be found");
			}
			LogProc("glMatrixMultTransposedEXT({0}, {1})", mode, "m");
		}
		

		/// <summary>
		/// Binding for glMatrixMultTransposefEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="m">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void MatrixMultTransposeEXT(int mode, float[] m) {
			unsafe {
				fixed (float* fp_m = m)
				{
					if      (Delegates.pglMatrixMultTransposefEXT != null)
						Delegates.pglMatrixMultTransposefEXT(mode, fp_m);
					else
						throw new InvalidOperationException("binding point MatrixMultTransposeEXT cannot be found");
				}
			}
			LogProc("glMatrixMultTransposefEXT({0}, {1})", mode, m);
		}

		/// <summary>
		/// Binding for glMatrixMultTransposefEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="m">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void MatrixMultTransposeEXT(int mode, float* m) {
			unsafe {
				if      (Delegates.pglMatrixMultTransposefEXT != null)
					Delegates.pglMatrixMultTransposefEXT(mode, m);
				else
					throw new InvalidOperationException("binding point MatrixMultTransposeEXT cannot be found");
			}
			LogProc("glMatrixMultTransposefEXT({0}, {1})", mode, "m");
		}
		

		/// <summary>
		/// Binding for glMatrixOrthoEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="left">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="right">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="bottom">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="top">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="zNear">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="zFar">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		public static void MatrixOrthoEXT(int mode, double left, double right, double bottom, double top, double zNear, double zFar) {
			if      (Delegates.pglMatrixOrthoEXT != null)
				Delegates.pglMatrixOrthoEXT(mode, left, right, bottom, top, zNear, zFar);
			else
				throw new InvalidOperationException("binding point MatrixOrthoEXT cannot be found");
			LogProc("glMatrixOrthoEXT({0}, {1}, {2}, {3}, {4}, {5}, {6})", mode, left, right, bottom, top, zNear, zFar);
		}

		/// <summary>
		/// Binding for glMatrixPopEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void MatrixPopEXT(int mode) {
			if      (Delegates.pglMatrixPopEXT != null)
				Delegates.pglMatrixPopEXT(mode);
			else
				throw new InvalidOperationException("binding point MatrixPopEXT cannot be found");
			LogProc("glMatrixPopEXT({0})", mode);
		}

		/// <summary>
		/// Binding for glMatrixPushEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void MatrixPushEXT(int mode) {
			if      (Delegates.pglMatrixPushEXT != null)
				Delegates.pglMatrixPushEXT(mode);
			else
				throw new InvalidOperationException("binding point MatrixPushEXT cannot be found");
			LogProc("glMatrixPushEXT({0})", mode);
		}

		/// <summary>
		/// Binding for glMatrixRotatedEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="angle">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		public static void MatrixRotateEXT(int mode, double angle, double x, double y, double z) {
			if      (Delegates.pglMatrixRotatedEXT != null)
				Delegates.pglMatrixRotatedEXT(mode, angle, x, y, z);
			else
				throw new InvalidOperationException("binding point MatrixRotateEXT cannot be found");
			LogProc("glMatrixRotatedEXT({0}, {1}, {2}, {3}, {4})", mode, angle, x, y, z);
		}

		/// <summary>
		/// Binding for glMatrixRotatefEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="angle">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void MatrixRotateEXT(int mode, float angle, float x, float y, float z) {
			if      (Delegates.pglMatrixRotatefEXT != null)
				Delegates.pglMatrixRotatefEXT(mode, angle, x, y, z);
			else
				throw new InvalidOperationException("binding point MatrixRotateEXT cannot be found");
			LogProc("glMatrixRotatefEXT({0}, {1}, {2}, {3}, {4})", mode, angle, x, y, z);
		}

		/// <summary>
		/// Binding for glMatrixScaledEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		public static void MatrixScaleEXT(int mode, double x, double y, double z) {
			if      (Delegates.pglMatrixScaledEXT != null)
				Delegates.pglMatrixScaledEXT(mode, x, y, z);
			else
				throw new InvalidOperationException("binding point MatrixScaleEXT cannot be found");
			LogProc("glMatrixScaledEXT({0}, {1}, {2}, {3})", mode, x, y, z);
		}

		/// <summary>
		/// Binding for glMatrixScalefEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void MatrixScaleEXT(int mode, float x, float y, float z) {
			if      (Delegates.pglMatrixScalefEXT != null)
				Delegates.pglMatrixScalefEXT(mode, x, y, z);
			else
				throw new InvalidOperationException("binding point MatrixScaleEXT cannot be found");
			LogProc("glMatrixScalefEXT({0}, {1}, {2}, {3})", mode, x, y, z);
		}

		/// <summary>
		/// Binding for glMatrixTranslatedEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		public static void MatrixTranslateEXT(int mode, double x, double y, double z) {
			if      (Delegates.pglMatrixTranslatedEXT != null)
				Delegates.pglMatrixTranslatedEXT(mode, x, y, z);
			else
				throw new InvalidOperationException("binding point MatrixTranslateEXT cannot be found");
			LogProc("glMatrixTranslatedEXT({0}, {1}, {2}, {3})", mode, x, y, z);
		}

		/// <summary>
		/// Binding for glMatrixTranslatefEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void MatrixTranslateEXT(int mode, float x, float y, float z) {
			if      (Delegates.pglMatrixTranslatefEXT != null)
				Delegates.pglMatrixTranslatefEXT(mode, x, y, z);
			else
				throw new InvalidOperationException("binding point MatrixTranslateEXT cannot be found");
			LogProc("glMatrixTranslatefEXT({0}, {1}, {2}, {3})", mode, x, y, z);
		}

		/// <summary>
		/// Binding for glMemoryBarrierEXT function.
		/// </summary>
		/// <param name="barriers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void MemoryBarrierEXT(uint barriers) {
			if      (Delegates.pglMemoryBarrierEXT != null)
				Delegates.pglMemoryBarrierEXT(barriers);
			else
				throw new InvalidOperationException("binding point MemoryBarrierEXT cannot be found");
			LogProc("glMemoryBarrierEXT({0})", barriers);
		}

		/// <summary>
		/// Binding for glMinmaxEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="sink">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void MinmaxEXT(int target, int internalformat, bool sink) {
			if      (Delegates.pglMinmaxEXT != null)
				Delegates.pglMinmaxEXT(target, internalformat, sink);
			else
				throw new InvalidOperationException("binding point MinmaxEXT cannot be found");
			LogProc("glMinmaxEXT({0}, {1}, {2})", target, internalformat, sink);
		}

		/// <summary>
		/// Binding for glMultiDrawArraysEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="first">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void MultiDrawArraysEXT(int mode, int[] first, Int32[] count, Int32 primcount) {
			unsafe {
				fixed (int* fp_first = first)
				fixed (Int32* fp_count = count)
				{
					if      (Delegates.pglMultiDrawArraysEXT != null)
						Delegates.pglMultiDrawArraysEXT(mode, fp_first, fp_count, primcount);
					else
						throw new InvalidOperationException("binding point MultiDrawArraysEXT cannot be found");
				}
			}
			LogProc("glMultiDrawArraysEXT({0}, {1}, {2}, {3})", mode, first, count, primcount);
		}

		/// <summary>
		/// Binding for glMultiDrawArraysEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="first">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void MultiDrawArraysEXT(int mode, int* first, Int32[] count, Int32 primcount) {
			unsafe {
				fixed (Int32* fp_count = count)
				{
					if      (Delegates.pglMultiDrawArraysEXT != null)
						Delegates.pglMultiDrawArraysEXT(mode, first, fp_count, primcount);
					else
						throw new InvalidOperationException("binding point MultiDrawArraysEXT cannot be found");
				}
			}
			LogProc("glMultiDrawArraysEXT({0}, {1}, {2}, {3})", mode, "first", count, primcount);
		}
		

		/// <summary>
		/// Binding for glMultiDrawElementsEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.IntPtr*"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void MultiDrawElementsEXT(int mode, Int32[] count, int type, IntPtr[] indices, Int32 primcount) {
			unsafe {
				fixed (Int32* fp_count = count)
				fixed (IntPtr* fp_indices = indices)
				{
					if      (Delegates.pglMultiDrawElementsEXT != null)
						Delegates.pglMultiDrawElementsEXT(mode, fp_count, type, fp_indices, primcount);
					else
						throw new InvalidOperationException("binding point MultiDrawElementsEXT cannot be found");
				}
			}
			LogProc("glMultiDrawElementsEXT({0}, {1}, {2}, {3}, {4})", mode, count, type, indices, primcount);
		}

		/// <summary>
		/// Binding for glMultiTexBufferEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void MultiTexBufferEXT(int texunit, int target, int internalformat, UInt32 buffer) {
			if      (Delegates.pglMultiTexBufferEXT != null)
				Delegates.pglMultiTexBufferEXT(texunit, target, internalformat, buffer);
			else
				throw new InvalidOperationException("binding point MultiTexBufferEXT cannot be found");
			LogProc("glMultiTexBufferEXT({0}, {1}, {2}, {3})", texunit, target, internalformat, buffer);
		}

		/// <summary>
		/// Binding for glMultiTexCoordPointerEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void MultiTexCoordPointerEXT(int texunit, int size, int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglMultiTexCoordPointerEXT != null)
					Delegates.pglMultiTexCoordPointerEXT(texunit, size, type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point MultiTexCoordPointerEXT cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glMultiTexCoordPointerEXT({0}, {1}, {2}, {3}, {4})", texunit, size, type, stride, pointer);
		}

		/// <summary>
		/// Binding for glMultiTexEnvfEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void MultiTexEnvEXT(int texunit, int target, int pname, float param) {
			if      (Delegates.pglMultiTexEnvfEXT != null)
				Delegates.pglMultiTexEnvfEXT(texunit, target, pname, param);
			else
				throw new InvalidOperationException("binding point MultiTexEnvEXT cannot be found");
			LogProc("glMultiTexEnvfEXT({0}, {1}, {2}, {3})", texunit, target, pname, param);
		}

		/// <summary>
		/// Binding for glMultiTexEnvfvEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void MultiTexEnvEXT(int texunit, int target, int pname, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglMultiTexEnvfvEXT != null)
						Delegates.pglMultiTexEnvfvEXT(texunit, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point MultiTexEnvEXT cannot be found");
				}
			}
			LogProc("glMultiTexEnvfvEXT({0}, {1}, {2}, {3})", texunit, target, pname, @params);
		}

		/// <summary>
		/// Binding for glMultiTexEnviEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void MultiTexEnvEXT(int texunit, int target, int pname, int param) {
			if      (Delegates.pglMultiTexEnviEXT != null)
				Delegates.pglMultiTexEnviEXT(texunit, target, pname, param);
			else
				throw new InvalidOperationException("binding point MultiTexEnvEXT cannot be found");
			LogProc("glMultiTexEnviEXT({0}, {1}, {2}, {3})", texunit, target, pname, param);
		}

		/// <summary>
		/// Binding for glMultiTexEnvivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		public static void MultiTexEnvEXT(int texunit, int target, int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglMultiTexEnvivEXT != null)
						Delegates.pglMultiTexEnvivEXT(texunit, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point MultiTexEnvEXT cannot be found");
				}
			}
			LogProc("glMultiTexEnvivEXT({0}, {1}, {2}, {3})", texunit, target, pname, @params);
		}

		/// <summary>
		/// Binding for glMultiTexGendEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		public static void MultiTexGenEXT(int texunit, int coord, int pname, double param) {
			if      (Delegates.pglMultiTexGendEXT != null)
				Delegates.pglMultiTexGendEXT(texunit, coord, pname, param);
			else
				throw new InvalidOperationException("binding point MultiTexGenEXT cannot be found");
			LogProc("glMultiTexGendEXT({0}, {1}, {2}, {3})", texunit, coord, pname, param);
		}

		/// <summary>
		/// Binding for glMultiTexGendvEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		public static void MultiTexGenEXT(int texunit, int coord, int pname, double[] @params) {
			unsafe {
				fixed (double* fp_params = @params)
				{
					if      (Delegates.pglMultiTexGendvEXT != null)
						Delegates.pglMultiTexGendvEXT(texunit, coord, pname, fp_params);
					else
						throw new InvalidOperationException("binding point MultiTexGenEXT cannot be found");
				}
			}
			LogProc("glMultiTexGendvEXT({0}, {1}, {2}, {3})", texunit, coord, pname, @params);
		}

		/// <summary>
		/// Binding for glMultiTexGendvEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		public static void MultiTexGenEXT(int texunit, int coord, int pname, double* @params) {
			unsafe {
				if      (Delegates.pglMultiTexGendvEXT != null)
					Delegates.pglMultiTexGendvEXT(texunit, coord, pname, @params);
				else
					throw new InvalidOperationException("binding point MultiTexGenEXT cannot be found");
			}
			LogProc("glMultiTexGendvEXT({0}, {1}, {2}, {3})", texunit, coord, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glMultiTexGenfEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void MultiTexGenEXT(int texunit, int coord, int pname, float param) {
			if      (Delegates.pglMultiTexGenfEXT != null)
				Delegates.pglMultiTexGenfEXT(texunit, coord, pname, param);
			else
				throw new InvalidOperationException("binding point MultiTexGenEXT cannot be found");
			LogProc("glMultiTexGenfEXT({0}, {1}, {2}, {3})", texunit, coord, pname, param);
		}

		/// <summary>
		/// Binding for glMultiTexGenfvEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void MultiTexGenEXT(int texunit, int coord, int pname, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglMultiTexGenfvEXT != null)
						Delegates.pglMultiTexGenfvEXT(texunit, coord, pname, fp_params);
					else
						throw new InvalidOperationException("binding point MultiTexGenEXT cannot be found");
				}
			}
			LogProc("glMultiTexGenfvEXT({0}, {1}, {2}, {3})", texunit, coord, pname, @params);
		}

		/// <summary>
		/// Binding for glMultiTexGeniEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void MultiTexGenEXT(int texunit, int coord, int pname, int param) {
			if      (Delegates.pglMultiTexGeniEXT != null)
				Delegates.pglMultiTexGeniEXT(texunit, coord, pname, param);
			else
				throw new InvalidOperationException("binding point MultiTexGenEXT cannot be found");
			LogProc("glMultiTexGeniEXT({0}, {1}, {2}, {3})", texunit, coord, pname, param);
		}

		/// <summary>
		/// Binding for glMultiTexGenivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		public static void MultiTexGenEXT(int texunit, int coord, int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglMultiTexGenivEXT != null)
						Delegates.pglMultiTexGenivEXT(texunit, coord, pname, fp_params);
					else
						throw new InvalidOperationException("binding point MultiTexGenEXT cannot be found");
				}
			}
			LogProc("glMultiTexGenivEXT({0}, {1}, {2}, {3})", texunit, coord, pname, @params);
		}

		/// <summary>
		/// Binding for glMultiTexImage1DEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void MultiTexImage1DEXT(int texunit, int target, int level, int internalformat, Int32 width, int border, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglMultiTexImage1DEXT != null)
					Delegates.pglMultiTexImage1DEXT(texunit, target, level, internalformat, width, border, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point MultiTexImage1DEXT cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glMultiTexImage1DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", texunit, target, level, internalformat, width, border, format, type, pixels);
		}

		/// <summary>
		/// Binding for glMultiTexImage2DEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void MultiTexImage2DEXT(int texunit, int target, int level, int internalformat, Int32 width, Int32 height, int border, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglMultiTexImage2DEXT != null)
					Delegates.pglMultiTexImage2DEXT(texunit, target, level, internalformat, width, height, border, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point MultiTexImage2DEXT cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glMultiTexImage2DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9})", texunit, target, level, internalformat, width, height, border, format, type, pixels);
		}

		/// <summary>
		/// Binding for glMultiTexImage3DEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void MultiTexImage3DEXT(int texunit, int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglMultiTexImage3DEXT != null)
					Delegates.pglMultiTexImage3DEXT(texunit, target, level, internalformat, width, height, depth, border, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point MultiTexImage3DEXT cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glMultiTexImage3DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10})", texunit, target, level, internalformat, width, height, depth, border, format, type, pixels);
		}

		/// <summary>
		/// Binding for glMultiTexParameterfEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void MultiTexParameterEXT(int texunit, int target, int pname, float param) {
			if      (Delegates.pglMultiTexParameterfEXT != null)
				Delegates.pglMultiTexParameterfEXT(texunit, target, pname, param);
			else
				throw new InvalidOperationException("binding point MultiTexParameterEXT cannot be found");
			LogProc("glMultiTexParameterfEXT({0}, {1}, {2}, {3})", texunit, target, pname, param);
		}

		/// <summary>
		/// Binding for glMultiTexParameterfvEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void MultiTexParameterEXT(int texunit, int target, int pname, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglMultiTexParameterfvEXT != null)
						Delegates.pglMultiTexParameterfvEXT(texunit, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point MultiTexParameterEXT cannot be found");
				}
			}
			LogProc("glMultiTexParameterfvEXT({0}, {1}, {2}, {3})", texunit, target, pname, @params);
		}

		/// <summary>
		/// Binding for glMultiTexParameteriEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void MultiTexParameterEXT(int texunit, int target, int pname, int param) {
			if      (Delegates.pglMultiTexParameteriEXT != null)
				Delegates.pglMultiTexParameteriEXT(texunit, target, pname, param);
			else
				throw new InvalidOperationException("binding point MultiTexParameterEXT cannot be found");
			LogProc("glMultiTexParameteriEXT({0}, {1}, {2}, {3})", texunit, target, pname, param);
		}

		/// <summary>
		/// Binding for glMultiTexParameterIivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		public static void MultiTexParameterIEXT(int texunit, int target, int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglMultiTexParameterIivEXT != null)
						Delegates.pglMultiTexParameterIivEXT(texunit, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point MultiTexParameterIEXT cannot be found");
				}
			}
			LogProc("glMultiTexParameterIivEXT({0}, {1}, {2}, {3})", texunit, target, pname, @params);
		}

		/// <summary>
		/// Binding for glMultiTexParameterIuivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		public static void MultiTexParameterIEXT(int texunit, int target, int pname, UInt32[] @params) {
			unsafe {
				fixed (UInt32* fp_params = @params)
				{
					if      (Delegates.pglMultiTexParameterIuivEXT != null)
						Delegates.pglMultiTexParameterIuivEXT(texunit, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point MultiTexParameterIEXT cannot be found");
				}
			}
			LogProc("glMultiTexParameterIuivEXT({0}, {1}, {2}, {3})", texunit, target, pname, @params);
		}

		/// <summary>
		/// Binding for glMultiTexParameterIuivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void MultiTexParameterIEXT(int texunit, int target, int pname, UInt32* @params) {
			unsafe {
				if      (Delegates.pglMultiTexParameterIuivEXT != null)
					Delegates.pglMultiTexParameterIuivEXT(texunit, target, pname, @params);
				else
					throw new InvalidOperationException("binding point MultiTexParameterIEXT cannot be found");
			}
			LogProc("glMultiTexParameterIuivEXT({0}, {1}, {2}, {3})", texunit, target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glMultiTexParameterivEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		public static void MultiTexParameterEXT(int texunit, int target, int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglMultiTexParameterivEXT != null)
						Delegates.pglMultiTexParameterivEXT(texunit, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point MultiTexParameterEXT cannot be found");
				}
			}
			LogProc("glMultiTexParameterivEXT({0}, {1}, {2}, {3})", texunit, target, pname, @params);
		}

		/// <summary>
		/// Binding for glMultiTexRenderbufferEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void MultiTexRenderbufferEXT(int texunit, int target, UInt32 renderbuffer) {
			if      (Delegates.pglMultiTexRenderbufferEXT != null)
				Delegates.pglMultiTexRenderbufferEXT(texunit, target, renderbuffer);
			else
				throw new InvalidOperationException("binding point MultiTexRenderbufferEXT cannot be found");
			LogProc("glMultiTexRenderbufferEXT({0}, {1}, {2})", texunit, target, renderbuffer);
		}

		/// <summary>
		/// Binding for glMultiTexSubImage1DEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void MultiTexSubImage1DEXT(int texunit, int target, int level, int xoffset, Int32 width, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglMultiTexSubImage1DEXT != null)
					Delegates.pglMultiTexSubImage1DEXT(texunit, target, level, xoffset, width, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point MultiTexSubImage1DEXT cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glMultiTexSubImage1DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", texunit, target, level, xoffset, width, format, type, pixels);
		}

		/// <summary>
		/// Binding for glMultiTexSubImage2DEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void MultiTexSubImage2DEXT(int texunit, int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglMultiTexSubImage2DEXT != null)
					Delegates.pglMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point MultiTexSubImage2DEXT cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glMultiTexSubImage2DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9})", texunit, target, level, xoffset, yoffset, width, height, format, type, pixels);
		}

		/// <summary>
		/// Binding for glMultiTexSubImage3DEXT function.
		/// </summary>
		/// <param name="texunit">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="zoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void MultiTexSubImage3DEXT(int texunit, int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglMultiTexSubImage3DEXT != null)
					Delegates.pglMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point MultiTexSubImage3DEXT cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glMultiTexSubImage3DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
		}

		/// <summary>
		/// Binding for glNamedBufferDataEXT function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="usage">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void NamedBufferDataEXT(UInt32 buffer, UInt32 size, object data, int usage) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglNamedBufferDataEXT != null)
					Delegates.pglNamedBufferDataEXT(buffer, size, pp_data.AddrOfPinnedObject(), usage);
				else
					throw new InvalidOperationException("binding point NamedBufferDataEXT cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glNamedBufferDataEXT({0}, {1}, {2}, {3})", buffer, size, data, usage);
		}

		/// <summary>
		/// Binding for glNamedBufferSubDataEXT function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void NamedBufferSubDataEXT(UInt32 buffer, IntPtr offset, UInt32 size, object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglNamedBufferSubDataEXT != null)
					Delegates.pglNamedBufferSubDataEXT(buffer, offset, size, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point NamedBufferSubDataEXT cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glNamedBufferSubDataEXT({0}, {1}, {2}, {3})", buffer, offset, size, data);
		}

		/// <summary>
		/// Binding for glNamedCopyBufferSubDataEXT function.
		/// </summary>
		/// <param name="readBuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="writeBuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="readOffset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="writeOffset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void NamedCopyBufferSubDataEXT(UInt32 readBuffer, UInt32 writeBuffer, IntPtr readOffset, IntPtr writeOffset, UInt32 size) {
			if      (Delegates.pglNamedCopyBufferSubDataEXT != null)
				Delegates.pglNamedCopyBufferSubDataEXT(readBuffer, writeBuffer, readOffset, writeOffset, size);
			else
				throw new InvalidOperationException("binding point NamedCopyBufferSubDataEXT cannot be found");
			LogProc("glNamedCopyBufferSubDataEXT({0}, {1}, {2}, {3}, {4})", readBuffer, writeBuffer, readOffset, writeOffset, size);
		}

		/// <summary>
		/// Binding for glNamedFramebufferRenderbufferEXT function.
		/// </summary>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffertarget">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void NamedFramebufferRenderbufferEXT(UInt32 framebuffer, int attachment, int renderbuffertarget, UInt32 renderbuffer) {
			if      (Delegates.pglNamedFramebufferRenderbufferEXT != null)
				Delegates.pglNamedFramebufferRenderbufferEXT(framebuffer, attachment, renderbuffertarget, renderbuffer);
			else
				throw new InvalidOperationException("binding point NamedFramebufferRenderbufferEXT cannot be found");
			LogProc("glNamedFramebufferRenderbufferEXT({0}, {1}, {2}, {3})", framebuffer, attachment, renderbuffertarget, renderbuffer);
		}

		/// <summary>
		/// Binding for glNamedFramebufferTexture1DEXT function.
		/// </summary>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textarget">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void NamedFramebufferTexture1DEXT(UInt32 framebuffer, int attachment, int textarget, UInt32 texture, int level) {
			if      (Delegates.pglNamedFramebufferTexture1DEXT != null)
				Delegates.pglNamedFramebufferTexture1DEXT(framebuffer, attachment, textarget, texture, level);
			else
				throw new InvalidOperationException("binding point NamedFramebufferTexture1DEXT cannot be found");
			LogProc("glNamedFramebufferTexture1DEXT({0}, {1}, {2}, {3}, {4})", framebuffer, attachment, textarget, texture, level);
		}

		/// <summary>
		/// Binding for glNamedFramebufferTexture2DEXT function.
		/// </summary>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textarget">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void NamedFramebufferTexture2DEXT(UInt32 framebuffer, int attachment, int textarget, UInt32 texture, int level) {
			if      (Delegates.pglNamedFramebufferTexture2DEXT != null)
				Delegates.pglNamedFramebufferTexture2DEXT(framebuffer, attachment, textarget, texture, level);
			else
				throw new InvalidOperationException("binding point NamedFramebufferTexture2DEXT cannot be found");
			LogProc("glNamedFramebufferTexture2DEXT({0}, {1}, {2}, {3}, {4})", framebuffer, attachment, textarget, texture, level);
		}

		/// <summary>
		/// Binding for glNamedFramebufferTexture3DEXT function.
		/// </summary>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textarget">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="zoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void NamedFramebufferTexture3DEXT(UInt32 framebuffer, int attachment, int textarget, UInt32 texture, int level, int zoffset) {
			if      (Delegates.pglNamedFramebufferTexture3DEXT != null)
				Delegates.pglNamedFramebufferTexture3DEXT(framebuffer, attachment, textarget, texture, level, zoffset);
			else
				throw new InvalidOperationException("binding point NamedFramebufferTexture3DEXT cannot be found");
			LogProc("glNamedFramebufferTexture3DEXT({0}, {1}, {2}, {3}, {4}, {5})", framebuffer, attachment, textarget, texture, level, zoffset);
		}

		/// <summary>
		/// Binding for glNamedFramebufferTextureEXT function.
		/// </summary>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void NamedFramebufferTextureEXT(UInt32 framebuffer, int attachment, UInt32 texture, int level) {
			if      (Delegates.pglNamedFramebufferTextureEXT != null)
				Delegates.pglNamedFramebufferTextureEXT(framebuffer, attachment, texture, level);
			else
				throw new InvalidOperationException("binding point NamedFramebufferTextureEXT cannot be found");
			LogProc("glNamedFramebufferTextureEXT({0}, {1}, {2}, {3})", framebuffer, attachment, texture, level);
		}

		/// <summary>
		/// Binding for glNamedFramebufferTextureFaceEXT function.
		/// </summary>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void NamedFramebufferTextureFaceEXT(UInt32 framebuffer, int attachment, UInt32 texture, int level, int face) {
			if      (Delegates.pglNamedFramebufferTextureFaceEXT != null)
				Delegates.pglNamedFramebufferTextureFaceEXT(framebuffer, attachment, texture, level, face);
			else
				throw new InvalidOperationException("binding point NamedFramebufferTextureFaceEXT cannot be found");
			LogProc("glNamedFramebufferTextureFaceEXT({0}, {1}, {2}, {3}, {4})", framebuffer, attachment, texture, level, face);
		}

		/// <summary>
		/// Binding for glNamedFramebufferTextureLayerEXT function.
		/// </summary>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="layer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void NamedFramebufferTextureLayerEXT(UInt32 framebuffer, int attachment, UInt32 texture, int level, int layer) {
			if      (Delegates.pglNamedFramebufferTextureLayerEXT != null)
				Delegates.pglNamedFramebufferTextureLayerEXT(framebuffer, attachment, texture, level, layer);
			else
				throw new InvalidOperationException("binding point NamedFramebufferTextureLayerEXT cannot be found");
			LogProc("glNamedFramebufferTextureLayerEXT({0}, {1}, {2}, {3}, {4})", framebuffer, attachment, texture, level, layer);
		}

		/// <summary>
		/// Binding for glNamedProgramLocalParameter4dEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		public static void NamedProgramLocalParameter4EXT(UInt32 program, int target, UInt32 index, double x, double y, double z, double w) {
			if      (Delegates.pglNamedProgramLocalParameter4dEXT != null)
				Delegates.pglNamedProgramLocalParameter4dEXT(program, target, index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point NamedProgramLocalParameter4EXT cannot be found");
			LogProc("glNamedProgramLocalParameter4dEXT({0}, {1}, {2}, {3}, {4}, {5}, {6})", program, target, index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glNamedProgramLocalParameter4dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		public static void NamedProgramLocalParameter4EXT(UInt32 program, int target, UInt32 index, double[] @params) {
			unsafe {
				fixed (double* fp_params = @params)
				{
					if      (Delegates.pglNamedProgramLocalParameter4dvEXT != null)
						Delegates.pglNamedProgramLocalParameter4dvEXT(program, target, index, fp_params);
					else
						throw new InvalidOperationException("binding point NamedProgramLocalParameter4EXT cannot be found");
				}
			}
			LogProc("glNamedProgramLocalParameter4dvEXT({0}, {1}, {2}, {3})", program, target, index, @params);
		}

		/// <summary>
		/// Binding for glNamedProgramLocalParameter4dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		public static void NamedProgramLocalParameter4EXT(UInt32 program, int target, UInt32 index, double* @params) {
			unsafe {
				if      (Delegates.pglNamedProgramLocalParameter4dvEXT != null)
					Delegates.pglNamedProgramLocalParameter4dvEXT(program, target, index, @params);
				else
					throw new InvalidOperationException("binding point NamedProgramLocalParameter4EXT cannot be found");
			}
			LogProc("glNamedProgramLocalParameter4dvEXT({0}, {1}, {2}, {3})", program, target, index, "@params");
		}
		

		/// <summary>
		/// Binding for glNamedProgramLocalParameter4fEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void NamedProgramLocalParameter4EXT(UInt32 program, int target, UInt32 index, float x, float y, float z, float w) {
			if      (Delegates.pglNamedProgramLocalParameter4fEXT != null)
				Delegates.pglNamedProgramLocalParameter4fEXT(program, target, index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point NamedProgramLocalParameter4EXT cannot be found");
			LogProc("glNamedProgramLocalParameter4fEXT({0}, {1}, {2}, {3}, {4}, {5}, {6})", program, target, index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glNamedProgramLocalParameter4fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void NamedProgramLocalParameter4EXT(UInt32 program, int target, UInt32 index, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglNamedProgramLocalParameter4fvEXT != null)
						Delegates.pglNamedProgramLocalParameter4fvEXT(program, target, index, fp_params);
					else
						throw new InvalidOperationException("binding point NamedProgramLocalParameter4EXT cannot be found");
				}
			}
			LogProc("glNamedProgramLocalParameter4fvEXT({0}, {1}, {2}, {3})", program, target, index, @params);
		}

		/// <summary>
		/// Binding for glNamedProgramLocalParameter4fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void NamedProgramLocalParameter4EXT(UInt32 program, int target, UInt32 index, float* @params) {
			unsafe {
				if      (Delegates.pglNamedProgramLocalParameter4fvEXT != null)
					Delegates.pglNamedProgramLocalParameter4fvEXT(program, target, index, @params);
				else
					throw new InvalidOperationException("binding point NamedProgramLocalParameter4EXT cannot be found");
			}
			LogProc("glNamedProgramLocalParameter4fvEXT({0}, {1}, {2}, {3})", program, target, index, "@params");
		}
		

		/// <summary>
		/// Binding for glNamedProgramLocalParameterI4iEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void NamedProgramLocalParameterI4EXT(UInt32 program, int target, UInt32 index, int x, int y, int z, int w) {
			if      (Delegates.pglNamedProgramLocalParameterI4iEXT != null)
				Delegates.pglNamedProgramLocalParameterI4iEXT(program, target, index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point NamedProgramLocalParameterI4EXT cannot be found");
			LogProc("glNamedProgramLocalParameterI4iEXT({0}, {1}, {2}, {3}, {4}, {5}, {6})", program, target, index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glNamedProgramLocalParameterI4ivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		public static void NamedProgramLocalParameterI4EXT(UInt32 program, int target, UInt32 index, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglNamedProgramLocalParameterI4ivEXT != null)
						Delegates.pglNamedProgramLocalParameterI4ivEXT(program, target, index, fp_params);
					else
						throw new InvalidOperationException("binding point NamedProgramLocalParameterI4EXT cannot be found");
				}
			}
			LogProc("glNamedProgramLocalParameterI4ivEXT({0}, {1}, {2}, {3})", program, target, index, @params);
		}

		/// <summary>
		/// Binding for glNamedProgramLocalParameterI4ivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void NamedProgramLocalParameterI4EXT(UInt32 program, int target, UInt32 index, int* @params) {
			unsafe {
				if      (Delegates.pglNamedProgramLocalParameterI4ivEXT != null)
					Delegates.pglNamedProgramLocalParameterI4ivEXT(program, target, index, @params);
				else
					throw new InvalidOperationException("binding point NamedProgramLocalParameterI4EXT cannot be found");
			}
			LogProc("glNamedProgramLocalParameterI4ivEXT({0}, {1}, {2}, {3})", program, target, index, "@params");
		}
		

		/// <summary>
		/// Binding for glNamedProgramLocalParameterI4uiEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void NamedProgramLocalParameterI4EXT(UInt32 program, int target, UInt32 index, UInt32 x, UInt32 y, UInt32 z, UInt32 w) {
			if      (Delegates.pglNamedProgramLocalParameterI4uiEXT != null)
				Delegates.pglNamedProgramLocalParameterI4uiEXT(program, target, index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point NamedProgramLocalParameterI4EXT cannot be found");
			LogProc("glNamedProgramLocalParameterI4uiEXT({0}, {1}, {2}, {3}, {4}, {5}, {6})", program, target, index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glNamedProgramLocalParameterI4uivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		public static void NamedProgramLocalParameterI4EXT(UInt32 program, int target, UInt32 index, UInt32[] @params) {
			unsafe {
				fixed (UInt32* fp_params = @params)
				{
					if      (Delegates.pglNamedProgramLocalParameterI4uivEXT != null)
						Delegates.pglNamedProgramLocalParameterI4uivEXT(program, target, index, fp_params);
					else
						throw new InvalidOperationException("binding point NamedProgramLocalParameterI4EXT cannot be found");
				}
			}
			LogProc("glNamedProgramLocalParameterI4uivEXT({0}, {1}, {2}, {3})", program, target, index, @params);
		}

		/// <summary>
		/// Binding for glNamedProgramLocalParameterI4uivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void NamedProgramLocalParameterI4EXT(UInt32 program, int target, UInt32 index, UInt32* @params) {
			unsafe {
				if      (Delegates.pglNamedProgramLocalParameterI4uivEXT != null)
					Delegates.pglNamedProgramLocalParameterI4uivEXT(program, target, index, @params);
				else
					throw new InvalidOperationException("binding point NamedProgramLocalParameterI4EXT cannot be found");
			}
			LogProc("glNamedProgramLocalParameterI4uivEXT({0}, {1}, {2}, {3})", program, target, index, "@params");
		}
		

		/// <summary>
		/// Binding for glNamedProgramLocalParameters4fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void NamedProgramLocalParameters4EXT(UInt32 program, int target, UInt32 index, Int32 count, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglNamedProgramLocalParameters4fvEXT != null)
						Delegates.pglNamedProgramLocalParameters4fvEXT(program, target, index, count, fp_params);
					else
						throw new InvalidOperationException("binding point NamedProgramLocalParameters4EXT cannot be found");
				}
			}
			LogProc("glNamedProgramLocalParameters4fvEXT({0}, {1}, {2}, {3}, {4})", program, target, index, count, @params);
		}

		/// <summary>
		/// Binding for glNamedProgramLocalParameters4fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void NamedProgramLocalParameters4EXT(UInt32 program, int target, UInt32 index, Int32 count, float* @params) {
			unsafe {
				if      (Delegates.pglNamedProgramLocalParameters4fvEXT != null)
					Delegates.pglNamedProgramLocalParameters4fvEXT(program, target, index, count, @params);
				else
					throw new InvalidOperationException("binding point NamedProgramLocalParameters4EXT cannot be found");
			}
			LogProc("glNamedProgramLocalParameters4fvEXT({0}, {1}, {2}, {3}, {4})", program, target, index, count, "@params");
		}
		

		/// <summary>
		/// Binding for glNamedProgramLocalParametersI4ivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		public static void NamedProgramLocalParametersI4EXT(UInt32 program, int target, UInt32 index, Int32 count, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglNamedProgramLocalParametersI4ivEXT != null)
						Delegates.pglNamedProgramLocalParametersI4ivEXT(program, target, index, count, fp_params);
					else
						throw new InvalidOperationException("binding point NamedProgramLocalParametersI4EXT cannot be found");
				}
			}
			LogProc("glNamedProgramLocalParametersI4ivEXT({0}, {1}, {2}, {3}, {4})", program, target, index, count, @params);
		}

		/// <summary>
		/// Binding for glNamedProgramLocalParametersI4ivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void NamedProgramLocalParametersI4EXT(UInt32 program, int target, UInt32 index, Int32 count, int* @params) {
			unsafe {
				if      (Delegates.pglNamedProgramLocalParametersI4ivEXT != null)
					Delegates.pglNamedProgramLocalParametersI4ivEXT(program, target, index, count, @params);
				else
					throw new InvalidOperationException("binding point NamedProgramLocalParametersI4EXT cannot be found");
			}
			LogProc("glNamedProgramLocalParametersI4ivEXT({0}, {1}, {2}, {3}, {4})", program, target, index, count, "@params");
		}
		

		/// <summary>
		/// Binding for glNamedProgramLocalParametersI4uivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		public static void NamedProgramLocalParametersI4EXT(UInt32 program, int target, UInt32 index, Int32 count, UInt32[] @params) {
			unsafe {
				fixed (UInt32* fp_params = @params)
				{
					if      (Delegates.pglNamedProgramLocalParametersI4uivEXT != null)
						Delegates.pglNamedProgramLocalParametersI4uivEXT(program, target, index, count, fp_params);
					else
						throw new InvalidOperationException("binding point NamedProgramLocalParametersI4EXT cannot be found");
				}
			}
			LogProc("glNamedProgramLocalParametersI4uivEXT({0}, {1}, {2}, {3}, {4})", program, target, index, count, @params);
		}

		/// <summary>
		/// Binding for glNamedProgramLocalParametersI4uivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void NamedProgramLocalParametersI4EXT(UInt32 program, int target, UInt32 index, Int32 count, UInt32* @params) {
			unsafe {
				if      (Delegates.pglNamedProgramLocalParametersI4uivEXT != null)
					Delegates.pglNamedProgramLocalParametersI4uivEXT(program, target, index, count, @params);
				else
					throw new InvalidOperationException("binding point NamedProgramLocalParametersI4EXT cannot be found");
			}
			LogProc("glNamedProgramLocalParametersI4uivEXT({0}, {1}, {2}, {3}, {4})", program, target, index, count, "@params");
		}
		

		/// <summary>
		/// Binding for glNamedProgramStringEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="len">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="string">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void NamedProgramStringEXT(UInt32 program, int target, int format, Int32 len, object @string) {
			GCHandle pp_string = GCHandle.Alloc(@string, GCHandleType.Pinned);
			try {
				if      (Delegates.pglNamedProgramStringEXT != null)
					Delegates.pglNamedProgramStringEXT(program, target, format, len, pp_string.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point NamedProgramStringEXT cannot be found");
			} finally {
				pp_string.Free();
			}
			LogProc("glNamedProgramStringEXT({0}, {1}, {2}, {3}, {4})", program, target, format, len, @string);
		}

		/// <summary>
		/// Binding for glNamedRenderbufferStorageEXT function.
		/// </summary>
		/// <param name="renderbuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void NamedRenderbufferStorageEXT(UInt32 renderbuffer, int internalformat, Int32 width, Int32 height) {
			if      (Delegates.pglNamedRenderbufferStorageEXT != null)
				Delegates.pglNamedRenderbufferStorageEXT(renderbuffer, internalformat, width, height);
			else
				throw new InvalidOperationException("binding point NamedRenderbufferStorageEXT cannot be found");
			LogProc("glNamedRenderbufferStorageEXT({0}, {1}, {2}, {3})", renderbuffer, internalformat, width, height);
		}

		/// <summary>
		/// Binding for glNamedRenderbufferStorageMultisampleCoverageEXT function.
		/// </summary>
		/// <param name="renderbuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="coverageSamples">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="colorSamples">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void NamedRenderbufferStorageMultisampleCoverageEXT(UInt32 renderbuffer, Int32 coverageSamples, Int32 colorSamples, int internalformat, Int32 width, Int32 height) {
			if      (Delegates.pglNamedRenderbufferStorageMultisampleCoverageEXT != null)
				Delegates.pglNamedRenderbufferStorageMultisampleCoverageEXT(renderbuffer, coverageSamples, colorSamples, internalformat, width, height);
			else
				throw new InvalidOperationException("binding point NamedRenderbufferStorageMultisampleCoverageEXT cannot be found");
			LogProc("glNamedRenderbufferStorageMultisampleCoverageEXT({0}, {1}, {2}, {3}, {4}, {5})", renderbuffer, coverageSamples, colorSamples, internalformat, width, height);
		}

		/// <summary>
		/// Binding for glNamedRenderbufferStorageMultisampleEXT function.
		/// </summary>
		/// <param name="renderbuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="samples">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void NamedRenderbufferStorageMultisampleEXT(UInt32 renderbuffer, Int32 samples, int internalformat, Int32 width, Int32 height) {
			if      (Delegates.pglNamedRenderbufferStorageMultisampleEXT != null)
				Delegates.pglNamedRenderbufferStorageMultisampleEXT(renderbuffer, samples, internalformat, width, height);
			else
				throw new InvalidOperationException("binding point NamedRenderbufferStorageMultisampleEXT cannot be found");
			LogProc("glNamedRenderbufferStorageMultisampleEXT({0}, {1}, {2}, {3}, {4})", renderbuffer, samples, internalformat, width, height);
		}

		/// <summary>
		/// Binding for glNormalPointerEXT function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void NormalPointerEXT(int type, Int32 stride, Int32 count, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglNormalPointerEXT != null)
					Delegates.pglNormalPointerEXT(type, stride, count, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point NormalPointerEXT cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glNormalPointerEXT({0}, {1}, {2}, {3})", type, stride, count, pointer);
		}

		/// <summary>
		/// Binding for glPixelTransformParameterfEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void PixelTransformParameterEXT(int target, int pname, float param) {
			if      (Delegates.pglPixelTransformParameterfEXT != null)
				Delegates.pglPixelTransformParameterfEXT(target, pname, param);
			else
				throw new InvalidOperationException("binding point PixelTransformParameterEXT cannot be found");
			LogProc("glPixelTransformParameterfEXT({0}, {1}, {2})", target, pname, param);
		}

		/// <summary>
		/// Binding for glPixelTransformParameterfvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void PixelTransformParameterEXT(int target, int pname, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglPixelTransformParameterfvEXT != null)
						Delegates.pglPixelTransformParameterfvEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point PixelTransformParameterEXT cannot be found");
				}
			}
			LogProc("glPixelTransformParameterfvEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glPixelTransformParameterfvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void PixelTransformParameterEXT(int target, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglPixelTransformParameterfvEXT != null)
					Delegates.pglPixelTransformParameterfvEXT(target, pname, @params);
				else
					throw new InvalidOperationException("binding point PixelTransformParameterEXT cannot be found");
			}
			LogProc("glPixelTransformParameterfvEXT({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glPixelTransformParameteriEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void PixelTransformParameterEXT(int target, int pname, int param) {
			if      (Delegates.pglPixelTransformParameteriEXT != null)
				Delegates.pglPixelTransformParameteriEXT(target, pname, param);
			else
				throw new InvalidOperationException("binding point PixelTransformParameterEXT cannot be found");
			LogProc("glPixelTransformParameteriEXT({0}, {1}, {2})", target, pname, param);
		}

		/// <summary>
		/// Binding for glPixelTransformParameterivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void PixelTransformParameterEXT(int target, int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglPixelTransformParameterivEXT != null)
						Delegates.pglPixelTransformParameterivEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point PixelTransformParameterEXT cannot be found");
				}
			}
			LogProc("glPixelTransformParameterivEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glPixelTransformParameterivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void PixelTransformParameterEXT(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglPixelTransformParameterivEXT != null)
					Delegates.pglPixelTransformParameterivEXT(target, pname, @params);
				else
					throw new InvalidOperationException("binding point PixelTransformParameterEXT cannot be found");
			}
			LogProc("glPixelTransformParameterivEXT({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glPointParameterfEXT function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void PointParameterEXT(int pname, float param) {
			if      (Delegates.pglPointParameterfEXT != null)
				Delegates.pglPointParameterfEXT(pname, param);
			else
				throw new InvalidOperationException("binding point PointParameterEXT cannot be found");
			LogProc("glPointParameterfEXT({0}, {1})", pname, param);
		}

		/// <summary>
		/// Binding for glPointParameterfvEXT function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void PointParameterEXT(int pname, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglPointParameterfvEXT != null)
						Delegates.pglPointParameterfvEXT(pname, fp_params);
					else
						throw new InvalidOperationException("binding point PointParameterEXT cannot be found");
				}
			}
			LogProc("glPointParameterfvEXT({0}, {1})", pname, @params);
		}

		/// <summary>
		/// Binding for glPolygonOffsetEXT function.
		/// </summary>
		/// <param name="factor">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="bias">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void PolygonOffsetEXT(float factor, float bias) {
			if      (Delegates.pglPolygonOffsetEXT != null)
				Delegates.pglPolygonOffsetEXT(factor, bias);
			else
				throw new InvalidOperationException("binding point PolygonOffsetEXT cannot be found");
			LogProc("glPolygonOffsetEXT({0}, {1})", factor, bias);
		}

		/// <summary>
		/// Binding for glPrioritizeTexturesEXT function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textures">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// <param name="priorities">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void PrioritizeTexturesEXT(Int32 n, UInt32[] textures, float[] priorities) {
			unsafe {
				fixed (UInt32* fp_textures = textures)
				fixed (float* fp_priorities = priorities)
				{
					if      (Delegates.pglPrioritizeTexturesEXT != null)
						Delegates.pglPrioritizeTexturesEXT(n, fp_textures, fp_priorities);
					else
						throw new InvalidOperationException("binding point PrioritizeTexturesEXT cannot be found");
				}
			}
			LogProc("glPrioritizeTexturesEXT({0}, {1}, {2})", n, textures, priorities);
		}

		/// <summary>
		/// Binding for glProgramEnvParameters4fvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramEnvParameters4EXT(int target, UInt32 index, Int32 count, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglProgramEnvParameters4fvEXT != null)
						Delegates.pglProgramEnvParameters4fvEXT(target, index, count, fp_params);
					else
						throw new InvalidOperationException("binding point ProgramEnvParameters4EXT cannot be found");
				}
			}
			LogProc("glProgramEnvParameters4fvEXT({0}, {1}, {2}, {3})", target, index, count, @params);
		}

		/// <summary>
		/// Binding for glProgramEnvParameters4fvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramEnvParameters4EXT(int target, UInt32 index, Int32 count, float* @params) {
			unsafe {
				if      (Delegates.pglProgramEnvParameters4fvEXT != null)
					Delegates.pglProgramEnvParameters4fvEXT(target, index, count, @params);
				else
					throw new InvalidOperationException("binding point ProgramEnvParameters4EXT cannot be found");
			}
			LogProc("glProgramEnvParameters4fvEXT({0}, {1}, {2}, {3})", target, index, count, "@params");
		}
		

		/// <summary>
		/// Binding for glProgramLocalParameters4fvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramLocalParameters4EXT(int target, UInt32 index, Int32 count, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglProgramLocalParameters4fvEXT != null)
						Delegates.pglProgramLocalParameters4fvEXT(target, index, count, fp_params);
					else
						throw new InvalidOperationException("binding point ProgramLocalParameters4EXT cannot be found");
				}
			}
			LogProc("glProgramLocalParameters4fvEXT({0}, {1}, {2}, {3})", target, index, count, @params);
		}

		/// <summary>
		/// Binding for glProgramLocalParameters4fvEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramLocalParameters4EXT(int target, UInt32 index, Int32 count, float* @params) {
			unsafe {
				if      (Delegates.pglProgramLocalParameters4fvEXT != null)
					Delegates.pglProgramLocalParameters4fvEXT(target, index, count, @params);
				else
					throw new InvalidOperationException("binding point ProgramLocalParameters4EXT cannot be found");
			}
			LogProc("glProgramLocalParameters4fvEXT({0}, {1}, {2}, {3})", target, index, count, "@params");
		}
		

		/// <summary>
		/// Binding for glProgramParameteriEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void ProgramParameterEXT(UInt32 program, int pname, int value) {
			if      (Delegates.pglProgramParameteriEXT != null)
				Delegates.pglProgramParameteriEXT(program, pname, value);
			else
				throw new InvalidOperationException("binding point ProgramParameterEXT cannot be found");
			LogProc("glProgramParameteriEXT({0}, {1}, {2})", program, pname, value);
		}

		/// <summary>
		/// Binding for glProgramUniform1dEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniform1EXT(UInt32 program, int location, double x) {
			if      (Delegates.pglProgramUniform1dEXT != null)
				Delegates.pglProgramUniform1dEXT(program, location, x);
			else
				throw new InvalidOperationException("binding point ProgramUniform1EXT cannot be found");
			LogProc("glProgramUniform1dEXT({0}, {1}, {2})", program, location, x);
		}

		/// <summary>
		/// Binding for glProgramUniform1dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniform1EXT(UInt32 program, int location, Int32 count, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniform1dvEXT != null)
						Delegates.pglProgramUniform1dvEXT(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform1EXT cannot be found");
				}
			}
			LogProc("glProgramUniform1dvEXT({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform1dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniform1EXT(UInt32 program, int location, Int32 count, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniform1dvEXT != null)
					Delegates.pglProgramUniform1dvEXT(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform1EXT cannot be found");
			}
			LogProc("glProgramUniform1dvEXT({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform1fEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void ProgramUniform1EXT(UInt32 program, int location, float v0) {
			if      (Delegates.pglProgramUniform1fEXT != null)
				Delegates.pglProgramUniform1fEXT(program, location, v0);
			else
				throw new InvalidOperationException("binding point ProgramUniform1EXT cannot be found");
			LogProc("glProgramUniform1fEXT({0}, {1}, {2})", program, location, v0);
		}

		/// <summary>
		/// Binding for glProgramUniform1fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void ProgramUniform1EXT(UInt32 program, int location, Int32 count, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniform1fvEXT != null)
						Delegates.pglProgramUniform1fvEXT(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform1EXT cannot be found");
				}
			}
			LogProc("glProgramUniform1fvEXT({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform1fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void ProgramUniform1EXT(UInt32 program, int location, Int32 count, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniform1fvEXT != null)
					Delegates.pglProgramUniform1fvEXT(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform1EXT cannot be found");
			}
			LogProc("glProgramUniform1fvEXT({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform1iEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void ProgramUniform1EXT(UInt32 program, int location, int v0) {
			if      (Delegates.pglProgramUniform1iEXT != null)
				Delegates.pglProgramUniform1iEXT(program, location, v0);
			else
				throw new InvalidOperationException("binding point ProgramUniform1EXT cannot be found");
			LogProc("glProgramUniform1iEXT({0}, {1}, {2})", program, location, v0);
		}

		/// <summary>
		/// Binding for glProgramUniform1ivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		public static void ProgramUniform1EXT(UInt32 program, int location, Int32 count, int[] value) {
			unsafe {
				fixed (int* fp_value = value)
				{
					if      (Delegates.pglProgramUniform1ivEXT != null)
						Delegates.pglProgramUniform1ivEXT(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform1EXT cannot be found");
				}
			}
			LogProc("glProgramUniform1ivEXT({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform1ivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void ProgramUniform1EXT(UInt32 program, int location, Int32 count, int* value) {
			unsafe {
				if      (Delegates.pglProgramUniform1ivEXT != null)
					Delegates.pglProgramUniform1ivEXT(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform1EXT cannot be found");
			}
			LogProc("glProgramUniform1ivEXT({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform1uiEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void ProgramUniform1EXT(UInt32 program, int location, UInt32 v0) {
			if      (Delegates.pglProgramUniform1uiEXT != null)
				Delegates.pglProgramUniform1uiEXT(program, location, v0);
			else
				throw new InvalidOperationException("binding point ProgramUniform1EXT cannot be found");
			LogProc("glProgramUniform1uiEXT({0}, {1}, {2})", program, location, v0);
		}

		/// <summary>
		/// Binding for glProgramUniform1uivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		public static void ProgramUniform1EXT(UInt32 program, int location, Int32 count, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglProgramUniform1uivEXT != null)
						Delegates.pglProgramUniform1uivEXT(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform1EXT cannot be found");
				}
			}
			LogProc("glProgramUniform1uivEXT({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform1uivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void ProgramUniform1EXT(UInt32 program, int location, Int32 count, UInt32* value) {
			unsafe {
				if      (Delegates.pglProgramUniform1uivEXT != null)
					Delegates.pglProgramUniform1uivEXT(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform1EXT cannot be found");
			}
			LogProc("glProgramUniform1uivEXT({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform2dEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniform2EXT(UInt32 program, int location, double x, double y) {
			if      (Delegates.pglProgramUniform2dEXT != null)
				Delegates.pglProgramUniform2dEXT(program, location, x, y);
			else
				throw new InvalidOperationException("binding point ProgramUniform2EXT cannot be found");
			LogProc("glProgramUniform2dEXT({0}, {1}, {2}, {3})", program, location, x, y);
		}

		/// <summary>
		/// Binding for glProgramUniform2dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniform2EXT(UInt32 program, int location, Int32 count, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniform2dvEXT != null)
						Delegates.pglProgramUniform2dvEXT(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform2EXT cannot be found");
				}
			}
			LogProc("glProgramUniform2dvEXT({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform2dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniform2EXT(UInt32 program, int location, Int32 count, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniform2dvEXT != null)
					Delegates.pglProgramUniform2dvEXT(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform2EXT cannot be found");
			}
			LogProc("glProgramUniform2dvEXT({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform2fEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void ProgramUniform2EXT(UInt32 program, int location, float v0, float v1) {
			if      (Delegates.pglProgramUniform2fEXT != null)
				Delegates.pglProgramUniform2fEXT(program, location, v0, v1);
			else
				throw new InvalidOperationException("binding point ProgramUniform2EXT cannot be found");
			LogProc("glProgramUniform2fEXT({0}, {1}, {2}, {3})", program, location, v0, v1);
		}

		/// <summary>
		/// Binding for glProgramUniform2fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void ProgramUniform2EXT(UInt32 program, int location, Int32 count, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniform2fvEXT != null)
						Delegates.pglProgramUniform2fvEXT(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform2EXT cannot be found");
				}
			}
			LogProc("glProgramUniform2fvEXT({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform2fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void ProgramUniform2EXT(UInt32 program, int location, Int32 count, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniform2fvEXT != null)
					Delegates.pglProgramUniform2fvEXT(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform2EXT cannot be found");
			}
			LogProc("glProgramUniform2fvEXT({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform2iEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void ProgramUniform2EXT(UInt32 program, int location, int v0, int v1) {
			if      (Delegates.pglProgramUniform2iEXT != null)
				Delegates.pglProgramUniform2iEXT(program, location, v0, v1);
			else
				throw new InvalidOperationException("binding point ProgramUniform2EXT cannot be found");
			LogProc("glProgramUniform2iEXT({0}, {1}, {2}, {3})", program, location, v0, v1);
		}

		/// <summary>
		/// Binding for glProgramUniform2ivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		public static void ProgramUniform2EXT(UInt32 program, int location, Int32 count, int[] value) {
			unsafe {
				fixed (int* fp_value = value)
				{
					if      (Delegates.pglProgramUniform2ivEXT != null)
						Delegates.pglProgramUniform2ivEXT(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform2EXT cannot be found");
				}
			}
			LogProc("glProgramUniform2ivEXT({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform2ivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void ProgramUniform2EXT(UInt32 program, int location, Int32 count, int* value) {
			unsafe {
				if      (Delegates.pglProgramUniform2ivEXT != null)
					Delegates.pglProgramUniform2ivEXT(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform2EXT cannot be found");
			}
			LogProc("glProgramUniform2ivEXT({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform2uiEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void ProgramUniform2EXT(UInt32 program, int location, UInt32 v0, UInt32 v1) {
			if      (Delegates.pglProgramUniform2uiEXT != null)
				Delegates.pglProgramUniform2uiEXT(program, location, v0, v1);
			else
				throw new InvalidOperationException("binding point ProgramUniform2EXT cannot be found");
			LogProc("glProgramUniform2uiEXT({0}, {1}, {2}, {3})", program, location, v0, v1);
		}

		/// <summary>
		/// Binding for glProgramUniform2uivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		public static void ProgramUniform2EXT(UInt32 program, int location, Int32 count, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglProgramUniform2uivEXT != null)
						Delegates.pglProgramUniform2uivEXT(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform2EXT cannot be found");
				}
			}
			LogProc("glProgramUniform2uivEXT({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform2uivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void ProgramUniform2EXT(UInt32 program, int location, Int32 count, UInt32* value) {
			unsafe {
				if      (Delegates.pglProgramUniform2uivEXT != null)
					Delegates.pglProgramUniform2uivEXT(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform2EXT cannot be found");
			}
			LogProc("glProgramUniform2uivEXT({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform3dEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniform3EXT(UInt32 program, int location, double x, double y, double z) {
			if      (Delegates.pglProgramUniform3dEXT != null)
				Delegates.pglProgramUniform3dEXT(program, location, x, y, z);
			else
				throw new InvalidOperationException("binding point ProgramUniform3EXT cannot be found");
			LogProc("glProgramUniform3dEXT({0}, {1}, {2}, {3}, {4})", program, location, x, y, z);
		}

		/// <summary>
		/// Binding for glProgramUniform3dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniform3EXT(UInt32 program, int location, Int32 count, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniform3dvEXT != null)
						Delegates.pglProgramUniform3dvEXT(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform3EXT cannot be found");
				}
			}
			LogProc("glProgramUniform3dvEXT({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform3dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniform3EXT(UInt32 program, int location, Int32 count, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniform3dvEXT != null)
					Delegates.pglProgramUniform3dvEXT(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform3EXT cannot be found");
			}
			LogProc("glProgramUniform3dvEXT({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform3fEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void ProgramUniform3EXT(UInt32 program, int location, float v0, float v1, float v2) {
			if      (Delegates.pglProgramUniform3fEXT != null)
				Delegates.pglProgramUniform3fEXT(program, location, v0, v1, v2);
			else
				throw new InvalidOperationException("binding point ProgramUniform3EXT cannot be found");
			LogProc("glProgramUniform3fEXT({0}, {1}, {2}, {3}, {4})", program, location, v0, v1, v2);
		}

		/// <summary>
		/// Binding for glProgramUniform3fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void ProgramUniform3EXT(UInt32 program, int location, Int32 count, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniform3fvEXT != null)
						Delegates.pglProgramUniform3fvEXT(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform3EXT cannot be found");
				}
			}
			LogProc("glProgramUniform3fvEXT({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform3fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void ProgramUniform3EXT(UInt32 program, int location, Int32 count, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniform3fvEXT != null)
					Delegates.pglProgramUniform3fvEXT(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform3EXT cannot be found");
			}
			LogProc("glProgramUniform3fvEXT({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform3iEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void ProgramUniform3EXT(UInt32 program, int location, int v0, int v1, int v2) {
			if      (Delegates.pglProgramUniform3iEXT != null)
				Delegates.pglProgramUniform3iEXT(program, location, v0, v1, v2);
			else
				throw new InvalidOperationException("binding point ProgramUniform3EXT cannot be found");
			LogProc("glProgramUniform3iEXT({0}, {1}, {2}, {3}, {4})", program, location, v0, v1, v2);
		}

		/// <summary>
		/// Binding for glProgramUniform3ivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		public static void ProgramUniform3EXT(UInt32 program, int location, Int32 count, int[] value) {
			unsafe {
				fixed (int* fp_value = value)
				{
					if      (Delegates.pglProgramUniform3ivEXT != null)
						Delegates.pglProgramUniform3ivEXT(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform3EXT cannot be found");
				}
			}
			LogProc("glProgramUniform3ivEXT({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform3ivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void ProgramUniform3EXT(UInt32 program, int location, Int32 count, int* value) {
			unsafe {
				if      (Delegates.pglProgramUniform3ivEXT != null)
					Delegates.pglProgramUniform3ivEXT(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform3EXT cannot be found");
			}
			LogProc("glProgramUniform3ivEXT({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform3uiEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void ProgramUniform3EXT(UInt32 program, int location, UInt32 v0, UInt32 v1, UInt32 v2) {
			if      (Delegates.pglProgramUniform3uiEXT != null)
				Delegates.pglProgramUniform3uiEXT(program, location, v0, v1, v2);
			else
				throw new InvalidOperationException("binding point ProgramUniform3EXT cannot be found");
			LogProc("glProgramUniform3uiEXT({0}, {1}, {2}, {3}, {4})", program, location, v0, v1, v2);
		}

		/// <summary>
		/// Binding for glProgramUniform3uivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		public static void ProgramUniform3EXT(UInt32 program, int location, Int32 count, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglProgramUniform3uivEXT != null)
						Delegates.pglProgramUniform3uivEXT(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform3EXT cannot be found");
				}
			}
			LogProc("glProgramUniform3uivEXT({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform3uivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void ProgramUniform3EXT(UInt32 program, int location, Int32 count, UInt32* value) {
			unsafe {
				if      (Delegates.pglProgramUniform3uivEXT != null)
					Delegates.pglProgramUniform3uivEXT(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform3EXT cannot be found");
			}
			LogProc("glProgramUniform3uivEXT({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform4dEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniform4EXT(UInt32 program, int location, double x, double y, double z, double w) {
			if      (Delegates.pglProgramUniform4dEXT != null)
				Delegates.pglProgramUniform4dEXT(program, location, x, y, z, w);
			else
				throw new InvalidOperationException("binding point ProgramUniform4EXT cannot be found");
			LogProc("glProgramUniform4dEXT({0}, {1}, {2}, {3}, {4}, {5})", program, location, x, y, z, w);
		}

		/// <summary>
		/// Binding for glProgramUniform4dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniform4EXT(UInt32 program, int location, Int32 count, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniform4dvEXT != null)
						Delegates.pglProgramUniform4dvEXT(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform4EXT cannot be found");
				}
			}
			LogProc("glProgramUniform4dvEXT({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform4dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniform4EXT(UInt32 program, int location, Int32 count, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniform4dvEXT != null)
					Delegates.pglProgramUniform4dvEXT(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform4EXT cannot be found");
			}
			LogProc("glProgramUniform4dvEXT({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform4fEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v3">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void ProgramUniform4EXT(UInt32 program, int location, float v0, float v1, float v2, float v3) {
			if      (Delegates.pglProgramUniform4fEXT != null)
				Delegates.pglProgramUniform4fEXT(program, location, v0, v1, v2, v3);
			else
				throw new InvalidOperationException("binding point ProgramUniform4EXT cannot be found");
			LogProc("glProgramUniform4fEXT({0}, {1}, {2}, {3}, {4}, {5})", program, location, v0, v1, v2, v3);
		}

		/// <summary>
		/// Binding for glProgramUniform4fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void ProgramUniform4EXT(UInt32 program, int location, Int32 count, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniform4fvEXT != null)
						Delegates.pglProgramUniform4fvEXT(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform4EXT cannot be found");
				}
			}
			LogProc("glProgramUniform4fvEXT({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform4fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void ProgramUniform4EXT(UInt32 program, int location, Int32 count, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniform4fvEXT != null)
					Delegates.pglProgramUniform4fvEXT(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform4EXT cannot be found");
			}
			LogProc("glProgramUniform4fvEXT({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform4iEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v3">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void ProgramUniform4EXT(UInt32 program, int location, int v0, int v1, int v2, int v3) {
			if      (Delegates.pglProgramUniform4iEXT != null)
				Delegates.pglProgramUniform4iEXT(program, location, v0, v1, v2, v3);
			else
				throw new InvalidOperationException("binding point ProgramUniform4EXT cannot be found");
			LogProc("glProgramUniform4iEXT({0}, {1}, {2}, {3}, {4}, {5})", program, location, v0, v1, v2, v3);
		}

		/// <summary>
		/// Binding for glProgramUniform4ivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		public static void ProgramUniform4EXT(UInt32 program, int location, Int32 count, int[] value) {
			unsafe {
				fixed (int* fp_value = value)
				{
					if      (Delegates.pglProgramUniform4ivEXT != null)
						Delegates.pglProgramUniform4ivEXT(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform4EXT cannot be found");
				}
			}
			LogProc("glProgramUniform4ivEXT({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform4ivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void ProgramUniform4EXT(UInt32 program, int location, Int32 count, int* value) {
			unsafe {
				if      (Delegates.pglProgramUniform4ivEXT != null)
					Delegates.pglProgramUniform4ivEXT(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform4EXT cannot be found");
			}
			LogProc("glProgramUniform4ivEXT({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform4uiEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v3">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void ProgramUniform4EXT(UInt32 program, int location, UInt32 v0, UInt32 v1, UInt32 v2, UInt32 v3) {
			if      (Delegates.pglProgramUniform4uiEXT != null)
				Delegates.pglProgramUniform4uiEXT(program, location, v0, v1, v2, v3);
			else
				throw new InvalidOperationException("binding point ProgramUniform4EXT cannot be found");
			LogProc("glProgramUniform4uiEXT({0}, {1}, {2}, {3}, {4}, {5})", program, location, v0, v1, v2, v3);
		}

		/// <summary>
		/// Binding for glProgramUniform4uivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		public static void ProgramUniform4EXT(UInt32 program, int location, Int32 count, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglProgramUniform4uivEXT != null)
						Delegates.pglProgramUniform4uivEXT(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform4EXT cannot be found");
				}
			}
			LogProc("glProgramUniform4uivEXT({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform4uivEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void ProgramUniform4EXT(UInt32 program, int location, Int32 count, UInt32* value) {
			unsafe {
				if      (Delegates.pglProgramUniform4uivEXT != null)
					Delegates.pglProgramUniform4uivEXT(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform4EXT cannot be found");
			}
			LogProc("glProgramUniform4uivEXT({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix2dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniformMatrix2EXT(UInt32 program, int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix2dvEXT != null)
						Delegates.pglProgramUniformMatrix2dvEXT(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix2EXT cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix2dvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix2dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniformMatrix2EXT(UInt32 program, int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix2dvEXT != null)
					Delegates.pglProgramUniformMatrix2dvEXT(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix2EXT cannot be found");
			}
			LogProc("glProgramUniformMatrix2dvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix2fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void ProgramUniformMatrix2EXT(UInt32 program, int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix2fvEXT != null)
						Delegates.pglProgramUniformMatrix2fvEXT(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix2EXT cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix2fvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix2fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void ProgramUniformMatrix2EXT(UInt32 program, int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix2fvEXT != null)
					Delegates.pglProgramUniformMatrix2fvEXT(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix2EXT cannot be found");
			}
			LogProc("glProgramUniformMatrix2fvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix2x3dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniformMatrix2x3EXT(UInt32 program, int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix2x3dvEXT != null)
						Delegates.pglProgramUniformMatrix2x3dvEXT(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix2x3EXT cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix2x3dvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix2x3dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniformMatrix2x3EXT(UInt32 program, int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix2x3dvEXT != null)
					Delegates.pglProgramUniformMatrix2x3dvEXT(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix2x3EXT cannot be found");
			}
			LogProc("glProgramUniformMatrix2x3dvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix2x3fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void ProgramUniformMatrix2x3EXT(UInt32 program, int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix2x3fvEXT != null)
						Delegates.pglProgramUniformMatrix2x3fvEXT(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix2x3EXT cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix2x3fvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix2x3fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void ProgramUniformMatrix2x3EXT(UInt32 program, int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix2x3fvEXT != null)
					Delegates.pglProgramUniformMatrix2x3fvEXT(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix2x3EXT cannot be found");
			}
			LogProc("glProgramUniformMatrix2x3fvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix2x4dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniformMatrix2x4EXT(UInt32 program, int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix2x4dvEXT != null)
						Delegates.pglProgramUniformMatrix2x4dvEXT(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix2x4EXT cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix2x4dvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix2x4dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniformMatrix2x4EXT(UInt32 program, int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix2x4dvEXT != null)
					Delegates.pglProgramUniformMatrix2x4dvEXT(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix2x4EXT cannot be found");
			}
			LogProc("glProgramUniformMatrix2x4dvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix2x4fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void ProgramUniformMatrix2x4EXT(UInt32 program, int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix2x4fvEXT != null)
						Delegates.pglProgramUniformMatrix2x4fvEXT(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix2x4EXT cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix2x4fvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix2x4fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void ProgramUniformMatrix2x4EXT(UInt32 program, int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix2x4fvEXT != null)
					Delegates.pglProgramUniformMatrix2x4fvEXT(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix2x4EXT cannot be found");
			}
			LogProc("glProgramUniformMatrix2x4fvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix3dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniformMatrix3EXT(UInt32 program, int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix3dvEXT != null)
						Delegates.pglProgramUniformMatrix3dvEXT(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix3EXT cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix3dvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix3dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniformMatrix3EXT(UInt32 program, int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix3dvEXT != null)
					Delegates.pglProgramUniformMatrix3dvEXT(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix3EXT cannot be found");
			}
			LogProc("glProgramUniformMatrix3dvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix3fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void ProgramUniformMatrix3EXT(UInt32 program, int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix3fvEXT != null)
						Delegates.pglProgramUniformMatrix3fvEXT(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix3EXT cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix3fvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix3fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void ProgramUniformMatrix3EXT(UInt32 program, int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix3fvEXT != null)
					Delegates.pglProgramUniformMatrix3fvEXT(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix3EXT cannot be found");
			}
			LogProc("glProgramUniformMatrix3fvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix3x2dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniformMatrix3x2EXT(UInt32 program, int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix3x2dvEXT != null)
						Delegates.pglProgramUniformMatrix3x2dvEXT(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix3x2EXT cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix3x2dvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix3x2dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniformMatrix3x2EXT(UInt32 program, int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix3x2dvEXT != null)
					Delegates.pglProgramUniformMatrix3x2dvEXT(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix3x2EXT cannot be found");
			}
			LogProc("glProgramUniformMatrix3x2dvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix3x2fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void ProgramUniformMatrix3x2EXT(UInt32 program, int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix3x2fvEXT != null)
						Delegates.pglProgramUniformMatrix3x2fvEXT(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix3x2EXT cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix3x2fvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix3x2fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void ProgramUniformMatrix3x2EXT(UInt32 program, int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix3x2fvEXT != null)
					Delegates.pglProgramUniformMatrix3x2fvEXT(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix3x2EXT cannot be found");
			}
			LogProc("glProgramUniformMatrix3x2fvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix3x4dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniformMatrix3x4EXT(UInt32 program, int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix3x4dvEXT != null)
						Delegates.pglProgramUniformMatrix3x4dvEXT(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix3x4EXT cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix3x4dvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix3x4dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniformMatrix3x4EXT(UInt32 program, int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix3x4dvEXT != null)
					Delegates.pglProgramUniformMatrix3x4dvEXT(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix3x4EXT cannot be found");
			}
			LogProc("glProgramUniformMatrix3x4dvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix3x4fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void ProgramUniformMatrix3x4EXT(UInt32 program, int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix3x4fvEXT != null)
						Delegates.pglProgramUniformMatrix3x4fvEXT(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix3x4EXT cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix3x4fvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix3x4fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void ProgramUniformMatrix3x4EXT(UInt32 program, int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix3x4fvEXT != null)
					Delegates.pglProgramUniformMatrix3x4fvEXT(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix3x4EXT cannot be found");
			}
			LogProc("glProgramUniformMatrix3x4fvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix4dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniformMatrix4EXT(UInt32 program, int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix4dvEXT != null)
						Delegates.pglProgramUniformMatrix4dvEXT(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix4EXT cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix4dvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix4dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniformMatrix4EXT(UInt32 program, int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix4dvEXT != null)
					Delegates.pglProgramUniformMatrix4dvEXT(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix4EXT cannot be found");
			}
			LogProc("glProgramUniformMatrix4dvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix4fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void ProgramUniformMatrix4EXT(UInt32 program, int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix4fvEXT != null)
						Delegates.pglProgramUniformMatrix4fvEXT(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix4EXT cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix4fvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix4fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void ProgramUniformMatrix4EXT(UInt32 program, int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix4fvEXT != null)
					Delegates.pglProgramUniformMatrix4fvEXT(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix4EXT cannot be found");
			}
			LogProc("glProgramUniformMatrix4fvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix4x2dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniformMatrix4x2EXT(UInt32 program, int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix4x2dvEXT != null)
						Delegates.pglProgramUniformMatrix4x2dvEXT(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix4x2EXT cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix4x2dvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix4x2dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniformMatrix4x2EXT(UInt32 program, int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix4x2dvEXT != null)
					Delegates.pglProgramUniformMatrix4x2dvEXT(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix4x2EXT cannot be found");
			}
			LogProc("glProgramUniformMatrix4x2dvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix4x2fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void ProgramUniformMatrix4x2EXT(UInt32 program, int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix4x2fvEXT != null)
						Delegates.pglProgramUniformMatrix4x2fvEXT(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix4x2EXT cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix4x2fvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix4x2fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void ProgramUniformMatrix4x2EXT(UInt32 program, int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix4x2fvEXT != null)
					Delegates.pglProgramUniformMatrix4x2fvEXT(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix4x2EXT cannot be found");
			}
			LogProc("glProgramUniformMatrix4x2fvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix4x3dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniformMatrix4x3EXT(UInt32 program, int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix4x3dvEXT != null)
						Delegates.pglProgramUniformMatrix4x3dvEXT(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix4x3EXT cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix4x3dvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix4x3dvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProgramUniformMatrix4x3EXT(UInt32 program, int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix4x3dvEXT != null)
					Delegates.pglProgramUniformMatrix4x3dvEXT(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix4x3EXT cannot be found");
			}
			LogProc("glProgramUniformMatrix4x3dvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix4x3fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void ProgramUniformMatrix4x3EXT(UInt32 program, int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix4x3fvEXT != null)
						Delegates.pglProgramUniformMatrix4x3fvEXT(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix4x3EXT cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix4x3fvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix4x3fvEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void ProgramUniformMatrix4x3EXT(UInt32 program, int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix4x3fvEXT != null)
					Delegates.pglProgramUniformMatrix4x3fvEXT(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix4x3EXT cannot be found");
			}
			LogProc("glProgramUniformMatrix4x3fvEXT({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProvokingVertexEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.1
		public static void ProvokingVertexEXT(int mode) {
			if      (Delegates.pglProvokingVertexEXT != null)
				Delegates.pglProvokingVertexEXT(mode);
			else
				throw new InvalidOperationException("binding point ProvokingVertexEXT cannot be found");
			LogProc("glProvokingVertexEXT({0})", mode);
		}

		/// <summary>
		/// Binding for glPushClientAttribDefaultEXT function.
		/// </summary>
		/// <param name="mask">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void PushClientAttribDefaultEXT(uint mask) {
			if      (Delegates.pglPushClientAttribDefaultEXT != null)
				Delegates.pglPushClientAttribDefaultEXT(mask);
			else
				throw new InvalidOperationException("binding point PushClientAttribDefaultEXT cannot be found");
			LogProc("glPushClientAttribDefaultEXT({0})", mask);
		}

		/// <summary>
		/// Binding for glRenderbufferStorageEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void RenderbufferStorageEXT(int target, int internalformat, Int32 width, Int32 height) {
			if      (Delegates.pglRenderbufferStorageEXT != null)
				Delegates.pglRenderbufferStorageEXT(target, internalformat, width, height);
			else
				throw new InvalidOperationException("binding point RenderbufferStorageEXT cannot be found");
			LogProc("glRenderbufferStorageEXT({0}, {1}, {2}, {3})", target, internalformat, width, height);
		}

		/// <summary>
		/// Binding for glRenderbufferStorageMultisampleEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="samples">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void RenderbufferStorageMultisampleEXT(int target, Int32 samples, int internalformat, Int32 width, Int32 height) {
			if      (Delegates.pglRenderbufferStorageMultisampleEXT != null)
				Delegates.pglRenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height);
			else
				throw new InvalidOperationException("binding point RenderbufferStorageMultisampleEXT cannot be found");
			LogProc("glRenderbufferStorageMultisampleEXT({0}, {1}, {2}, {3}, {4})", target, samples, internalformat, width, height);
		}

		/// <summary>
		/// Binding for glResetHistogramEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void ResetHistogramEXT(int target) {
			if      (Delegates.pglResetHistogramEXT != null)
				Delegates.pglResetHistogramEXT(target);
			else
				throw new InvalidOperationException("binding point ResetHistogramEXT cannot be found");
			LogProc("glResetHistogramEXT({0})", target);
		}

		/// <summary>
		/// Binding for glResetMinmaxEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void ResetMinmaxEXT(int target) {
			if      (Delegates.pglResetMinmaxEXT != null)
				Delegates.pglResetMinmaxEXT(target);
			else
				throw new InvalidOperationException("binding point ResetMinmaxEXT cannot be found");
			LogProc("glResetMinmaxEXT({0})", target);
		}

		/// <summary>
		/// Binding for glSampleMaskEXT function.
		/// </summary>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="invert">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void SampleMaskEXT(float value, bool invert) {
			if      (Delegates.pglSampleMaskEXT != null)
				Delegates.pglSampleMaskEXT(value, invert);
			else
				throw new InvalidOperationException("binding point SampleMaskEXT cannot be found");
			LogProc("glSampleMaskEXT({0}, {1})", value, invert);
		}

		/// <summary>
		/// Binding for glSamplePatternEXT function.
		/// </summary>
		/// <param name="pattern">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void SamplePatternEXT(int pattern) {
			if      (Delegates.pglSamplePatternEXT != null)
				Delegates.pglSamplePatternEXT(pattern);
			else
				throw new InvalidOperationException("binding point SamplePatternEXT cannot be found");
			LogProc("glSamplePatternEXT({0})", pattern);
		}

		/// <summary>
		/// Binding for glSecondaryColor3bEXT function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void SecondaryColor3EXT(sbyte red, sbyte green, sbyte blue) {
			if      (Delegates.pglSecondaryColor3bEXT != null)
				Delegates.pglSecondaryColor3bEXT(red, green, blue);
			else
				throw new InvalidOperationException("binding point SecondaryColor3EXT cannot be found");
			LogProc("glSecondaryColor3bEXT({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glSecondaryColor3bvEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.SByte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void SecondaryColor3EXT(sbyte[] v) {
			unsafe {
				fixed (sbyte* fp_v = v)
				{
					if      (Delegates.pglSecondaryColor3bvEXT != null)
						Delegates.pglSecondaryColor3bvEXT(fp_v);
					else
						throw new InvalidOperationException("binding point SecondaryColor3EXT cannot be found");
				}
			}
			LogProc("glSecondaryColor3bvEXT({0})", v);
		}

		/// <summary>
		/// Binding for glSecondaryColor3dEXT function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void SecondaryColor3EXT(double red, double green, double blue) {
			if      (Delegates.pglSecondaryColor3dEXT != null)
				Delegates.pglSecondaryColor3dEXT(red, green, blue);
			else
				throw new InvalidOperationException("binding point SecondaryColor3EXT cannot be found");
			LogProc("glSecondaryColor3dEXT({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glSecondaryColor3dvEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void SecondaryColor3EXT(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglSecondaryColor3dvEXT != null)
						Delegates.pglSecondaryColor3dvEXT(fp_v);
					else
						throw new InvalidOperationException("binding point SecondaryColor3EXT cannot be found");
				}
			}
			LogProc("glSecondaryColor3dvEXT({0})", v);
		}

		/// <summary>
		/// Binding for glSecondaryColor3fEXT function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void SecondaryColor3EXT(float red, float green, float blue) {
			if      (Delegates.pglSecondaryColor3fEXT != null)
				Delegates.pglSecondaryColor3fEXT(red, green, blue);
			else
				throw new InvalidOperationException("binding point SecondaryColor3EXT cannot be found");
			LogProc("glSecondaryColor3fEXT({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glSecondaryColor3fvEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void SecondaryColor3EXT(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglSecondaryColor3fvEXT != null)
						Delegates.pglSecondaryColor3fvEXT(fp_v);
					else
						throw new InvalidOperationException("binding point SecondaryColor3EXT cannot be found");
				}
			}
			LogProc("glSecondaryColor3fvEXT({0})", v);
		}

		/// <summary>
		/// Binding for glSecondaryColor3iEXT function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void SecondaryColor3EXT(int red, int green, int blue) {
			if      (Delegates.pglSecondaryColor3iEXT != null)
				Delegates.pglSecondaryColor3iEXT(red, green, blue);
			else
				throw new InvalidOperationException("binding point SecondaryColor3EXT cannot be found");
			LogProc("glSecondaryColor3iEXT({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glSecondaryColor3ivEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void SecondaryColor3EXT(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglSecondaryColor3ivEXT != null)
						Delegates.pglSecondaryColor3ivEXT(fp_v);
					else
						throw new InvalidOperationException("binding point SecondaryColor3EXT cannot be found");
				}
			}
			LogProc("glSecondaryColor3ivEXT({0})", v);
		}

		/// <summary>
		/// Binding for glSecondaryColor3sEXT function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void SecondaryColor3EXT(Int16 red, Int16 green, Int16 blue) {
			if      (Delegates.pglSecondaryColor3sEXT != null)
				Delegates.pglSecondaryColor3sEXT(red, green, blue);
			else
				throw new InvalidOperationException("binding point SecondaryColor3EXT cannot be found");
			LogProc("glSecondaryColor3sEXT({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glSecondaryColor3svEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void SecondaryColor3EXT(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglSecondaryColor3svEXT != null)
						Delegates.pglSecondaryColor3svEXT(fp_v);
					else
						throw new InvalidOperationException("binding point SecondaryColor3EXT cannot be found");
				}
			}
			LogProc("glSecondaryColor3svEXT({0})", v);
		}

		/// <summary>
		/// Binding for glSecondaryColor3ubEXT function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void SecondaryColor3EXT(byte red, byte green, byte blue) {
			if      (Delegates.pglSecondaryColor3ubEXT != null)
				Delegates.pglSecondaryColor3ubEXT(red, green, blue);
			else
				throw new InvalidOperationException("binding point SecondaryColor3EXT cannot be found");
			LogProc("glSecondaryColor3ubEXT({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glSecondaryColor3ubvEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Byte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void SecondaryColor3EXT(byte[] v) {
			unsafe {
				fixed (byte* fp_v = v)
				{
					if      (Delegates.pglSecondaryColor3ubvEXT != null)
						Delegates.pglSecondaryColor3ubvEXT(fp_v);
					else
						throw new InvalidOperationException("binding point SecondaryColor3EXT cannot be found");
				}
			}
			LogProc("glSecondaryColor3ubvEXT({0})", v);
		}

		/// <summary>
		/// Binding for glSecondaryColor3uiEXT function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void SecondaryColor3EXT(UInt32 red, UInt32 green, UInt32 blue) {
			if      (Delegates.pglSecondaryColor3uiEXT != null)
				Delegates.pglSecondaryColor3uiEXT(red, green, blue);
			else
				throw new InvalidOperationException("binding point SecondaryColor3EXT cannot be found");
			LogProc("glSecondaryColor3uiEXT({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glSecondaryColor3uivEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void SecondaryColor3EXT(UInt32[] v) {
			unsafe {
				fixed (UInt32* fp_v = v)
				{
					if      (Delegates.pglSecondaryColor3uivEXT != null)
						Delegates.pglSecondaryColor3uivEXT(fp_v);
					else
						throw new InvalidOperationException("binding point SecondaryColor3EXT cannot be found");
				}
			}
			LogProc("glSecondaryColor3uivEXT({0})", v);
		}

		/// <summary>
		/// Binding for glSecondaryColor3usEXT function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.UInt16"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.UInt16"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.UInt16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void SecondaryColor3EXT(UInt16 red, UInt16 green, UInt16 blue) {
			if      (Delegates.pglSecondaryColor3usEXT != null)
				Delegates.pglSecondaryColor3usEXT(red, green, blue);
			else
				throw new InvalidOperationException("binding point SecondaryColor3EXT cannot be found");
			LogProc("glSecondaryColor3usEXT({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glSecondaryColor3usvEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.UInt16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void SecondaryColor3EXT(UInt16[] v) {
			unsafe {
				fixed (UInt16* fp_v = v)
				{
					if      (Delegates.pglSecondaryColor3usvEXT != null)
						Delegates.pglSecondaryColor3usvEXT(fp_v);
					else
						throw new InvalidOperationException("binding point SecondaryColor3EXT cannot be found");
				}
			}
			LogProc("glSecondaryColor3usvEXT({0})", v);
		}

		/// <summary>
		/// Binding for glSecondaryColorPointerEXT function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void SecondaryColorPointerEXT(int size, int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglSecondaryColorPointerEXT != null)
					Delegates.pglSecondaryColorPointerEXT(size, type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point SecondaryColorPointerEXT cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glSecondaryColorPointerEXT({0}, {1}, {2}, {3})", size, type, stride, pointer);
		}

		/// <summary>
		/// Binding for glSeparableFilter2DEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="row">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="column">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void SeparableFilter2DEXT(int target, int internalformat, Int32 width, Int32 height, int format, int type, object row, object column) {
			GCHandle pp_row = GCHandle.Alloc(row, GCHandleType.Pinned);
			GCHandle pp_column = GCHandle.Alloc(column, GCHandleType.Pinned);
			try {
				if      (Delegates.pglSeparableFilter2DEXT != null)
					Delegates.pglSeparableFilter2DEXT(target, internalformat, width, height, format, type, pp_row.AddrOfPinnedObject(), pp_column.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point SeparableFilter2DEXT cannot be found");
			} finally {
				pp_row.Free();
				pp_column.Free();
			}
			LogProc("glSeparableFilter2DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", target, internalformat, width, height, format, type, row, column);
		}

		/// <summary>
		/// Binding for glSetInvariantEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="addr">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void SetInvariantEXT(UInt32 id, int type, object addr) {
			GCHandle pp_addr = GCHandle.Alloc(addr, GCHandleType.Pinned);
			try {
				if      (Delegates.pglSetInvariantEXT != null)
					Delegates.pglSetInvariantEXT(id, type, pp_addr.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point SetInvariantEXT cannot be found");
			} finally {
				pp_addr.Free();
			}
			LogProc("glSetInvariantEXT({0}, {1}, {2})", id, type, addr);
		}

		/// <summary>
		/// Binding for glSetLocalConstantEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="addr">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void SetLocalConstantEXT(UInt32 id, int type, object addr) {
			GCHandle pp_addr = GCHandle.Alloc(addr, GCHandleType.Pinned);
			try {
				if      (Delegates.pglSetLocalConstantEXT != null)
					Delegates.pglSetLocalConstantEXT(id, type, pp_addr.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point SetLocalConstantEXT cannot be found");
			} finally {
				pp_addr.Free();
			}
			LogProc("glSetLocalConstantEXT({0}, {1}, {2})", id, type, addr);
		}

		/// <summary>
		/// Binding for glShaderOp1EXT function.
		/// </summary>
		/// <param name="op">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="res">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="arg1">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ShaderOp1EXT(int op, UInt32 res, UInt32 arg1) {
			if      (Delegates.pglShaderOp1EXT != null)
				Delegates.pglShaderOp1EXT(op, res, arg1);
			else
				throw new InvalidOperationException("binding point ShaderOp1EXT cannot be found");
			LogProc("glShaderOp1EXT({0}, {1}, {2})", op, res, arg1);
		}

		/// <summary>
		/// Binding for glShaderOp2EXT function.
		/// </summary>
		/// <param name="op">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="res">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="arg1">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="arg2">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ShaderOp2EXT(int op, UInt32 res, UInt32 arg1, UInt32 arg2) {
			if      (Delegates.pglShaderOp2EXT != null)
				Delegates.pglShaderOp2EXT(op, res, arg1, arg2);
			else
				throw new InvalidOperationException("binding point ShaderOp2EXT cannot be found");
			LogProc("glShaderOp2EXT({0}, {1}, {2}, {3})", op, res, arg1, arg2);
		}

		/// <summary>
		/// Binding for glShaderOp3EXT function.
		/// </summary>
		/// <param name="op">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="res">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="arg1">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="arg2">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="arg3">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ShaderOp3EXT(int op, UInt32 res, UInt32 arg1, UInt32 arg2, UInt32 arg3) {
			if      (Delegates.pglShaderOp3EXT != null)
				Delegates.pglShaderOp3EXT(op, res, arg1, arg2, arg3);
			else
				throw new InvalidOperationException("binding point ShaderOp3EXT cannot be found");
			LogProc("glShaderOp3EXT({0}, {1}, {2}, {3}, {4})", op, res, arg1, arg2, arg3);
		}

		/// <summary>
		/// Binding for glStencilClearTagEXT function.
		/// </summary>
		/// <param name="stencilTagBits">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stencilClearTag">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void StencilClearTagEXT(Int32 stencilTagBits, UInt32 stencilClearTag) {
			if      (Delegates.pglStencilClearTagEXT != null)
				Delegates.pglStencilClearTagEXT(stencilTagBits, stencilClearTag);
			else
				throw new InvalidOperationException("binding point StencilClearTagEXT cannot be found");
			LogProc("glStencilClearTagEXT({0}, {1})", stencilTagBits, stencilClearTag);
		}

		/// <summary>
		/// Binding for glSwizzleEXT function.
		/// </summary>
		/// <param name="res">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="in">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="outX">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="outY">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="outZ">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="outW">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void SwizzleEXT(UInt32 res, UInt32 @in, int outX, int outY, int outZ, int outW) {
			if      (Delegates.pglSwizzleEXT != null)
				Delegates.pglSwizzleEXT(res, @in, outX, outY, outZ, outW);
			else
				throw new InvalidOperationException("binding point SwizzleEXT cannot be found");
			LogProc("glSwizzleEXT({0}, {1}, {2}, {3}, {4}, {5})", res, @in, outX, outY, outZ, outW);
		}

		/// <summary>
		/// Binding for glTangent3bEXT function.
		/// </summary>
		/// <param name="tx">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// <param name="ty">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// <param name="tz">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Tangent3EXT(sbyte tx, sbyte ty, sbyte tz) {
			if      (Delegates.pglTangent3bEXT != null)
				Delegates.pglTangent3bEXT(tx, ty, tz);
			else
				throw new InvalidOperationException("binding point Tangent3EXT cannot be found");
			LogProc("glTangent3bEXT({0}, {1}, {2})", tx, ty, tz);
		}

		/// <summary>
		/// Binding for glTangent3bvEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.SByte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Tangent3EXT(sbyte[] v) {
			unsafe {
				fixed (sbyte* fp_v = v)
				{
					if      (Delegates.pglTangent3bvEXT != null)
						Delegates.pglTangent3bvEXT(fp_v);
					else
						throw new InvalidOperationException("binding point Tangent3EXT cannot be found");
				}
			}
			LogProc("glTangent3bvEXT({0})", v);
		}

		/// <summary>
		/// Binding for glTangent3dEXT function.
		/// </summary>
		/// <param name="tx">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="ty">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="tz">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Tangent3EXT(double tx, double ty, double tz) {
			if      (Delegates.pglTangent3dEXT != null)
				Delegates.pglTangent3dEXT(tx, ty, tz);
			else
				throw new InvalidOperationException("binding point Tangent3EXT cannot be found");
			LogProc("glTangent3dEXT({0}, {1}, {2})", tx, ty, tz);
		}

		/// <summary>
		/// Binding for glTangent3dvEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Tangent3EXT(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglTangent3dvEXT != null)
						Delegates.pglTangent3dvEXT(fp_v);
					else
						throw new InvalidOperationException("binding point Tangent3EXT cannot be found");
				}
			}
			LogProc("glTangent3dvEXT({0})", v);
		}

		/// <summary>
		/// Binding for glTangent3fEXT function.
		/// </summary>
		/// <param name="tx">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="ty">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="tz">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Tangent3EXT(float tx, float ty, float tz) {
			if      (Delegates.pglTangent3fEXT != null)
				Delegates.pglTangent3fEXT(tx, ty, tz);
			else
				throw new InvalidOperationException("binding point Tangent3EXT cannot be found");
			LogProc("glTangent3fEXT({0}, {1}, {2})", tx, ty, tz);
		}

		/// <summary>
		/// Binding for glTangent3fvEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Tangent3EXT(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglTangent3fvEXT != null)
						Delegates.pglTangent3fvEXT(fp_v);
					else
						throw new InvalidOperationException("binding point Tangent3EXT cannot be found");
				}
			}
			LogProc("glTangent3fvEXT({0})", v);
		}

		/// <summary>
		/// Binding for glTangent3iEXT function.
		/// </summary>
		/// <param name="tx">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ty">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="tz">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Tangent3EXT(int tx, int ty, int tz) {
			if      (Delegates.pglTangent3iEXT != null)
				Delegates.pglTangent3iEXT(tx, ty, tz);
			else
				throw new InvalidOperationException("binding point Tangent3EXT cannot be found");
			LogProc("glTangent3iEXT({0}, {1}, {2})", tx, ty, tz);
		}

		/// <summary>
		/// Binding for glTangent3ivEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Tangent3EXT(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglTangent3ivEXT != null)
						Delegates.pglTangent3ivEXT(fp_v);
					else
						throw new InvalidOperationException("binding point Tangent3EXT cannot be found");
				}
			}
			LogProc("glTangent3ivEXT({0})", v);
		}

		/// <summary>
		/// Binding for glTangent3ivEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Tangent3EXT(int* v) {
			unsafe {
				if      (Delegates.pglTangent3ivEXT != null)
					Delegates.pglTangent3ivEXT(v);
				else
					throw new InvalidOperationException("binding point Tangent3EXT cannot be found");
			}
			LogProc("glTangent3ivEXT({0})", "v");
		}
		

		/// <summary>
		/// Binding for glTangent3sEXT function.
		/// </summary>
		/// <param name="tx">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="ty">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="tz">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Tangent3EXT(Int16 tx, Int16 ty, Int16 tz) {
			if      (Delegates.pglTangent3sEXT != null)
				Delegates.pglTangent3sEXT(tx, ty, tz);
			else
				throw new InvalidOperationException("binding point Tangent3EXT cannot be found");
			LogProc("glTangent3sEXT({0}, {1}, {2})", tx, ty, tz);
		}

		/// <summary>
		/// Binding for glTangent3svEXT function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Tangent3EXT(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglTangent3svEXT != null)
						Delegates.pglTangent3svEXT(fp_v);
					else
						throw new InvalidOperationException("binding point Tangent3EXT cannot be found");
				}
			}
			LogProc("glTangent3svEXT({0})", v);
		}

		/// <summary>
		/// Binding for glTangentPointerEXT function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void TangentPointerEXT(int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTangentPointerEXT != null)
					Delegates.pglTangentPointerEXT(type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TangentPointerEXT cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glTangentPointerEXT({0}, {1}, {2})", type, stride, pointer);
		}

		/// <summary>
		/// Binding for glTexBufferEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void TexBufferEXT(int target, int internalformat, UInt32 buffer) {
			if      (Delegates.pglTexBufferEXT != null)
				Delegates.pglTexBufferEXT(target, internalformat, buffer);
			else
				throw new InvalidOperationException("binding point TexBufferEXT cannot be found");
			LogProc("glTexBufferEXT({0}, {1}, {2})", target, internalformat, buffer);
		}

		/// <summary>
		/// Binding for glTexCoordPointerEXT function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void TexCoordPointerEXT(int size, int type, Int32 stride, Int32 count, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTexCoordPointerEXT != null)
					Delegates.pglTexCoordPointerEXT(size, type, stride, count, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TexCoordPointerEXT cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glTexCoordPointerEXT({0}, {1}, {2}, {3}, {4})", size, type, stride, count, pointer);
		}

		/// <summary>
		/// Binding for glTexImage3DEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void TexImage3DEXT(int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTexImage3DEXT != null)
					Delegates.pglTexImage3DEXT(target, level, internalformat, width, height, depth, border, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TexImage3DEXT cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glTexImage3DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9})", target, level, internalformat, width, height, depth, border, format, type, pixels);
		}

		/// <summary>
		/// Binding for glTexParameterIivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void TexParameterIEXT(int target, int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglTexParameterIivEXT != null)
						Delegates.pglTexParameterIivEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point TexParameterIEXT cannot be found");
				}
			}
			LogProc("glTexParameterIivEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glTexParameterIivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void TexParameterIEXT(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglTexParameterIivEXT != null)
					Delegates.pglTexParameterIivEXT(target, pname, @params);
				else
					throw new InvalidOperationException("binding point TexParameterIEXT cannot be found");
			}
			LogProc("glTexParameterIivEXT({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glTexParameterIuivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void TexParameterIEXT(int target, int pname, UInt32[] @params) {
			unsafe {
				fixed (UInt32* fp_params = @params)
				{
					if      (Delegates.pglTexParameterIuivEXT != null)
						Delegates.pglTexParameterIuivEXT(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point TexParameterIEXT cannot be found");
				}
			}
			LogProc("glTexParameterIuivEXT({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glTexParameterIuivEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void TexParameterIEXT(int target, int pname, UInt32* @params) {
			unsafe {
				if      (Delegates.pglTexParameterIuivEXT != null)
					Delegates.pglTexParameterIuivEXT(target, pname, @params);
				else
					throw new InvalidOperationException("binding point TexParameterIEXT cannot be found");
			}
			LogProc("glTexParameterIuivEXT({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glTexSubImage1DEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void TexSubImage1DEXT(int target, int level, int xoffset, Int32 width, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTexSubImage1DEXT != null)
					Delegates.pglTexSubImage1DEXT(target, level, xoffset, width, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TexSubImage1DEXT cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glTexSubImage1DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6})", target, level, xoffset, width, format, type, pixels);
		}

		/// <summary>
		/// Binding for glTexSubImage2DEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void TexSubImage2DEXT(int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTexSubImage2DEXT != null)
					Delegates.pglTexSubImage2DEXT(target, level, xoffset, yoffset, width, height, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TexSubImage2DEXT cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glTexSubImage2DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", target, level, xoffset, yoffset, width, height, format, type, pixels);
		}

		/// <summary>
		/// Binding for glTexSubImage3DEXT function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="zoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void TexSubImage3DEXT(int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTexSubImage3DEXT != null)
					Delegates.pglTexSubImage3DEXT(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TexSubImage3DEXT cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glTexSubImage3DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10})", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
		}

		/// <summary>
		/// Binding for glTextureBufferEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void TextureBufferEXT(UInt32 texture, int target, int internalformat, UInt32 buffer) {
			if      (Delegates.pglTextureBufferEXT != null)
				Delegates.pglTextureBufferEXT(texture, target, internalformat, buffer);
			else
				throw new InvalidOperationException("binding point TextureBufferEXT cannot be found");
			LogProc("glTextureBufferEXT({0}, {1}, {2}, {3})", texture, target, internalformat, buffer);
		}

		/// <summary>
		/// Binding for glTextureImage1DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void TextureImage1DEXT(UInt32 texture, int target, int level, int internalformat, Int32 width, int border, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTextureImage1DEXT != null)
					Delegates.pglTextureImage1DEXT(texture, target, level, internalformat, width, border, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TextureImage1DEXT cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glTextureImage1DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", texture, target, level, internalformat, width, border, format, type, pixels);
		}

		/// <summary>
		/// Binding for glTextureImage2DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void TextureImage2DEXT(UInt32 texture, int target, int level, int internalformat, Int32 width, Int32 height, int border, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTextureImage2DEXT != null)
					Delegates.pglTextureImage2DEXT(texture, target, level, internalformat, width, height, border, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TextureImage2DEXT cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glTextureImage2DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9})", texture, target, level, internalformat, width, height, border, format, type, pixels);
		}

		/// <summary>
		/// Binding for glTextureImage3DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void TextureImage3DEXT(UInt32 texture, int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTextureImage3DEXT != null)
					Delegates.pglTextureImage3DEXT(texture, target, level, internalformat, width, height, depth, border, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TextureImage3DEXT cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glTextureImage3DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10})", texture, target, level, internalformat, width, height, depth, border, format, type, pixels);
		}

		/// <summary>
		/// Binding for glTextureLightEXT function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void TextureLightEXT(int pname) {
			if      (Delegates.pglTextureLightEXT != null)
				Delegates.pglTextureLightEXT(pname);
			else
				throw new InvalidOperationException("binding point TextureLightEXT cannot be found");
			LogProc("glTextureLightEXT({0})", pname);
		}

		/// <summary>
		/// Binding for glTextureMaterialEXT function.
		/// </summary>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void TextureMaterialEXT(int face, int mode) {
			if      (Delegates.pglTextureMaterialEXT != null)
				Delegates.pglTextureMaterialEXT(face, mode);
			else
				throw new InvalidOperationException("binding point TextureMaterialEXT cannot be found");
			LogProc("glTextureMaterialEXT({0}, {1})", face, mode);
		}

		/// <summary>
		/// Binding for glTextureNormalEXT function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void TextureNormalEXT(int mode) {
			if      (Delegates.pglTextureNormalEXT != null)
				Delegates.pglTextureNormalEXT(mode);
			else
				throw new InvalidOperationException("binding point TextureNormalEXT cannot be found");
			LogProc("glTextureNormalEXT({0})", mode);
		}

		/// <summary>
		/// Binding for glTextureParameterfEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		public static void TextureParameterEXT(UInt32 texture, int target, int pname, float param) {
			if      (Delegates.pglTextureParameterfEXT != null)
				Delegates.pglTextureParameterfEXT(texture, target, pname, param);
			else
				throw new InvalidOperationException("binding point TextureParameterEXT cannot be found");
			LogProc("glTextureParameterfEXT({0}, {1}, {2}, {3})", texture, target, pname, param);
		}

		/// <summary>
		/// Binding for glTextureParameterfvEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		public static void TextureParameterEXT(UInt32 texture, int target, int pname, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglTextureParameterfvEXT != null)
						Delegates.pglTextureParameterfvEXT(texture, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point TextureParameterEXT cannot be found");
				}
			}
			LogProc("glTextureParameterfvEXT({0}, {1}, {2}, {3})", texture, target, pname, @params);
		}

		/// <summary>
		/// Binding for glTextureParameteriEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void TextureParameterEXT(UInt32 texture, int target, int pname, int param) {
			if      (Delegates.pglTextureParameteriEXT != null)
				Delegates.pglTextureParameteriEXT(texture, target, pname, param);
			else
				throw new InvalidOperationException("binding point TextureParameterEXT cannot be found");
			LogProc("glTextureParameteriEXT({0}, {1}, {2}, {3})", texture, target, pname, param);
		}

		/// <summary>
		/// Binding for glTextureParameterIivEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		public static void TextureParameterIEXT(UInt32 texture, int target, int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglTextureParameterIivEXT != null)
						Delegates.pglTextureParameterIivEXT(texture, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point TextureParameterIEXT cannot be found");
				}
			}
			LogProc("glTextureParameterIivEXT({0}, {1}, {2}, {3})", texture, target, pname, @params);
		}

		/// <summary>
		/// Binding for glTextureParameterIuivEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		public static void TextureParameterIEXT(UInt32 texture, int target, int pname, UInt32[] @params) {
			unsafe {
				fixed (UInt32* fp_params = @params)
				{
					if      (Delegates.pglTextureParameterIuivEXT != null)
						Delegates.pglTextureParameterIuivEXT(texture, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point TextureParameterIEXT cannot be found");
				}
			}
			LogProc("glTextureParameterIuivEXT({0}, {1}, {2}, {3})", texture, target, pname, @params);
		}

		/// <summary>
		/// Binding for glTextureParameterIuivEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void TextureParameterIEXT(UInt32 texture, int target, int pname, UInt32* @params) {
			unsafe {
				if      (Delegates.pglTextureParameterIuivEXT != null)
					Delegates.pglTextureParameterIuivEXT(texture, target, pname, @params);
				else
					throw new InvalidOperationException("binding point TextureParameterIEXT cannot be found");
			}
			LogProc("glTextureParameterIuivEXT({0}, {1}, {2}, {3})", texture, target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glTextureParameterivEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		public static void TextureParameterEXT(UInt32 texture, int target, int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglTextureParameterivEXT != null)
						Delegates.pglTextureParameterivEXT(texture, target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point TextureParameterEXT cannot be found");
				}
			}
			LogProc("glTextureParameterivEXT({0}, {1}, {2}, {3})", texture, target, pname, @params);
		}

		/// <summary>
		/// Binding for glTextureRenderbufferEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void TextureRenderbufferEXT(UInt32 texture, int target, UInt32 renderbuffer) {
			if      (Delegates.pglTextureRenderbufferEXT != null)
				Delegates.pglTextureRenderbufferEXT(texture, target, renderbuffer);
			else
				throw new InvalidOperationException("binding point TextureRenderbufferEXT cannot be found");
			LogProc("glTextureRenderbufferEXT({0}, {1}, {2})", texture, target, renderbuffer);
		}

		/// <summary>
		/// Binding for glTextureStorage1DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="levels">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void TextureStorage1DEXT(UInt32 texture, int target, Int32 levels, int internalformat, Int32 width) {
			if      (Delegates.pglTextureStorage1DEXT != null)
				Delegates.pglTextureStorage1DEXT(texture, target, levels, internalformat, width);
			else
				throw new InvalidOperationException("binding point TextureStorage1DEXT cannot be found");
			LogProc("glTextureStorage1DEXT({0}, {1}, {2}, {3}, {4})", texture, target, levels, internalformat, width);
		}

		/// <summary>
		/// Binding for glTextureStorage2DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="levels">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void TextureStorage2DEXT(UInt32 texture, int target, Int32 levels, int internalformat, Int32 width, Int32 height) {
			if      (Delegates.pglTextureStorage2DEXT != null)
				Delegates.pglTextureStorage2DEXT(texture, target, levels, internalformat, width, height);
			else
				throw new InvalidOperationException("binding point TextureStorage2DEXT cannot be found");
			LogProc("glTextureStorage2DEXT({0}, {1}, {2}, {3}, {4}, {5})", texture, target, levels, internalformat, width, height);
		}

		/// <summary>
		/// Binding for glTextureStorage3DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="levels">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void TextureStorage3DEXT(UInt32 texture, int target, Int32 levels, int internalformat, Int32 width, Int32 height, Int32 depth) {
			if      (Delegates.pglTextureStorage3DEXT != null)
				Delegates.pglTextureStorage3DEXT(texture, target, levels, internalformat, width, height, depth);
			else
				throw new InvalidOperationException("binding point TextureStorage3DEXT cannot be found");
			LogProc("glTextureStorage3DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6})", texture, target, levels, internalformat, width, height, depth);
		}

		/// <summary>
		/// Binding for glTextureSubImage1DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void TextureSubImage1DEXT(UInt32 texture, int target, int level, int xoffset, Int32 width, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTextureSubImage1DEXT != null)
					Delegates.pglTextureSubImage1DEXT(texture, target, level, xoffset, width, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TextureSubImage1DEXT cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glTextureSubImage1DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", texture, target, level, xoffset, width, format, type, pixels);
		}

		/// <summary>
		/// Binding for glTextureSubImage2DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void TextureSubImage2DEXT(UInt32 texture, int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTextureSubImage2DEXT != null)
					Delegates.pglTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TextureSubImage2DEXT cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glTextureSubImage2DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9})", texture, target, level, xoffset, yoffset, width, height, format, type, pixels);
		}

		/// <summary>
		/// Binding for glTextureSubImage3DEXT function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="zoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void TextureSubImage3DEXT(UInt32 texture, int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTextureSubImage3DEXT != null)
					Delegates.pglTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TextureSubImage3DEXT cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glTextureSubImage3DEXT({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
		}

		/// <summary>
		/// Binding for glTransformFeedbackVaryingsEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="varyings">
		/// A <see cref="T:System.String[]"/>.
		/// </param>
		/// <param name="bufferMode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void TransformFeedbackVaryingEXT(UInt32 program, Int32 count, string[] varyings, int bufferMode) {
			if      (Delegates.pglTransformFeedbackVaryingsEXT != null)
				Delegates.pglTransformFeedbackVaryingsEXT(program, count, varyings, bufferMode);
			else
				throw new InvalidOperationException("binding point TransformFeedbackVaryingEXT cannot be found");
			LogProc("glTransformFeedbackVaryingsEXT({0}, {1}, {2}, {3})", program, count, varyings, bufferMode);
		}

		/// <summary>
		/// Binding for glUniform1uiEXT function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform1EXT(int location, UInt32 v0) {
			if      (Delegates.pglUniform1uiEXT != null)
				Delegates.pglUniform1uiEXT(location, v0);
			else
				throw new InvalidOperationException("binding point Uniform1EXT cannot be found");
			LogProc("glUniform1uiEXT({0}, {1})", location, v0);
		}

		/// <summary>
		/// Binding for glUniform1uivEXT function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform1EXT(int location, Int32 count, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglUniform1uivEXT != null)
						Delegates.pglUniform1uivEXT(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform1EXT cannot be found");
				}
			}
			LogProc("glUniform1uivEXT({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform1uivEXT function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform1EXT(int location, Int32 count, UInt32* value) {
			unsafe {
				if      (Delegates.pglUniform1uivEXT != null)
					Delegates.pglUniform1uivEXT(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform1EXT cannot be found");
			}
			LogProc("glUniform1uivEXT({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform2uiEXT function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform2EXT(int location, UInt32 v0, UInt32 v1) {
			if      (Delegates.pglUniform2uiEXT != null)
				Delegates.pglUniform2uiEXT(location, v0, v1);
			else
				throw new InvalidOperationException("binding point Uniform2EXT cannot be found");
			LogProc("glUniform2uiEXT({0}, {1}, {2})", location, v0, v1);
		}

		/// <summary>
		/// Binding for glUniform2uivEXT function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform2EXT(int location, Int32 count, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglUniform2uivEXT != null)
						Delegates.pglUniform2uivEXT(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform2EXT cannot be found");
				}
			}
			LogProc("glUniform2uivEXT({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform2uivEXT function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform2EXT(int location, Int32 count, UInt32* value) {
			unsafe {
				if      (Delegates.pglUniform2uivEXT != null)
					Delegates.pglUniform2uivEXT(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform2EXT cannot be found");
			}
			LogProc("glUniform2uivEXT({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform3uiEXT function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform3EXT(int location, UInt32 v0, UInt32 v1, UInt32 v2) {
			if      (Delegates.pglUniform3uiEXT != null)
				Delegates.pglUniform3uiEXT(location, v0, v1, v2);
			else
				throw new InvalidOperationException("binding point Uniform3EXT cannot be found");
			LogProc("glUniform3uiEXT({0}, {1}, {2}, {3})", location, v0, v1, v2);
		}

		/// <summary>
		/// Binding for glUniform3uivEXT function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform3EXT(int location, Int32 count, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglUniform3uivEXT != null)
						Delegates.pglUniform3uivEXT(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform3EXT cannot be found");
				}
			}
			LogProc("glUniform3uivEXT({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform3uivEXT function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform3EXT(int location, Int32 count, UInt32* value) {
			unsafe {
				if      (Delegates.pglUniform3uivEXT != null)
					Delegates.pglUniform3uivEXT(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform3EXT cannot be found");
			}
			LogProc("glUniform3uivEXT({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform4uiEXT function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v3">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform4EXT(int location, UInt32 v0, UInt32 v1, UInt32 v2, UInt32 v3) {
			if      (Delegates.pglUniform4uiEXT != null)
				Delegates.pglUniform4uiEXT(location, v0, v1, v2, v3);
			else
				throw new InvalidOperationException("binding point Uniform4EXT cannot be found");
			LogProc("glUniform4uiEXT({0}, {1}, {2}, {3}, {4})", location, v0, v1, v2, v3);
		}

		/// <summary>
		/// Binding for glUniform4uivEXT function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform4EXT(int location, Int32 count, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglUniform4uivEXT != null)
						Delegates.pglUniform4uivEXT(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform4EXT cannot be found");
				}
			}
			LogProc("glUniform4uivEXT({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform4uivEXT function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform4EXT(int location, Int32 count, UInt32* value) {
			unsafe {
				if      (Delegates.pglUniform4uivEXT != null)
					Delegates.pglUniform4uivEXT(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform4EXT cannot be found");
			}
			LogProc("glUniform4uivEXT({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniformBufferEXT function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void UniformBufferEXT(UInt32 program, int location, UInt32 buffer) {
			if      (Delegates.pglUniformBufferEXT != null)
				Delegates.pglUniformBufferEXT(program, location, buffer);
			else
				throw new InvalidOperationException("binding point UniformBufferEXT cannot be found");
			LogProc("glUniformBufferEXT({0}, {1}, {2})", program, location, buffer);
		}

		/// <summary>
		/// Binding for glUnlockArraysEXT function.
		/// </summary>
		/// @note This routine is available from OpenGL 1.1
		public static void UnlockArraysEXT() {
			if      (Delegates.pglUnlockArraysEXT != null)
				Delegates.pglUnlockArraysEXT();
			else
				throw new InvalidOperationException("binding point UnlockArraysEXT cannot be found");
			LogProc("glUnlockArraysEXT()");
		}

		/// <summary>
		/// Binding for glUnmapNamedBufferEXT function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static bool UnmapNamedBufferEXT(UInt32 buffer) {
			bool retvalue;
			if      (Delegates.pglUnmapNamedBufferEXT != null)
				retvalue = (Delegates.pglUnmapNamedBufferEXT(buffer));
			else
				throw new InvalidOperationException("binding point UnmapNamedBufferEXT cannot be found");
			LogProc("glUnmapNamedBufferEXT({0}) = {1}", buffer, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glUseShaderProgramEXT function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UseShaderProgramEXT(int type, UInt32 program) {
			if      (Delegates.pglUseShaderProgramEXT != null)
				Delegates.pglUseShaderProgramEXT(type, program);
			else
				throw new InvalidOperationException("binding point UseShaderProgramEXT cannot be found");
			LogProc("glUseShaderProgramEXT({0}, {1})", type, program);
		}

		/// <summary>
		/// Binding for glVariantbvEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="addr">
		/// A <see cref="T:System.SByte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VariantEXT(UInt32 id, sbyte[] addr) {
			unsafe {
				fixed (sbyte* fp_addr = addr)
				{
					if      (Delegates.pglVariantbvEXT != null)
						Delegates.pglVariantbvEXT(id, fp_addr);
					else
						throw new InvalidOperationException("binding point VariantEXT cannot be found");
				}
			}
			LogProc("glVariantbvEXT({0}, {1})", id, addr);
		}

		/// <summary>
		/// Binding for glVariantdvEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="addr">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VariantEXT(UInt32 id, double[] addr) {
			unsafe {
				fixed (double* fp_addr = addr)
				{
					if      (Delegates.pglVariantdvEXT != null)
						Delegates.pglVariantdvEXT(id, fp_addr);
					else
						throw new InvalidOperationException("binding point VariantEXT cannot be found");
				}
			}
			LogProc("glVariantdvEXT({0}, {1})", id, addr);
		}

		/// <summary>
		/// Binding for glVariantdvEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="addr">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VariantEXT(UInt32 id, double* addr) {
			unsafe {
				if      (Delegates.pglVariantdvEXT != null)
					Delegates.pglVariantdvEXT(id, addr);
				else
					throw new InvalidOperationException("binding point VariantEXT cannot be found");
			}
			LogProc("glVariantdvEXT({0}, {1})", id, "addr");
		}
		

		/// <summary>
		/// Binding for glVariantfvEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="addr">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VariantEXT(UInt32 id, float[] addr) {
			unsafe {
				fixed (float* fp_addr = addr)
				{
					if      (Delegates.pglVariantfvEXT != null)
						Delegates.pglVariantfvEXT(id, fp_addr);
					else
						throw new InvalidOperationException("binding point VariantEXT cannot be found");
				}
			}
			LogProc("glVariantfvEXT({0}, {1})", id, addr);
		}

		/// <summary>
		/// Binding for glVariantfvEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="addr">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VariantEXT(UInt32 id, float* addr) {
			unsafe {
				if      (Delegates.pglVariantfvEXT != null)
					Delegates.pglVariantfvEXT(id, addr);
				else
					throw new InvalidOperationException("binding point VariantEXT cannot be found");
			}
			LogProc("glVariantfvEXT({0}, {1})", id, "addr");
		}
		

		/// <summary>
		/// Binding for glVariantivEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="addr">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VariantEXT(UInt32 id, int[] addr) {
			unsafe {
				fixed (int* fp_addr = addr)
				{
					if      (Delegates.pglVariantivEXT != null)
						Delegates.pglVariantivEXT(id, fp_addr);
					else
						throw new InvalidOperationException("binding point VariantEXT cannot be found");
				}
			}
			LogProc("glVariantivEXT({0}, {1})", id, addr);
		}

		/// <summary>
		/// Binding for glVariantivEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="addr">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VariantEXT(UInt32 id, int* addr) {
			unsafe {
				if      (Delegates.pglVariantivEXT != null)
					Delegates.pglVariantivEXT(id, addr);
				else
					throw new InvalidOperationException("binding point VariantEXT cannot be found");
			}
			LogProc("glVariantivEXT({0}, {1})", id, "addr");
		}
		

		/// <summary>
		/// Binding for glVariantPointerEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="addr">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VariantPointerEXT(UInt32 id, int type, UInt32 stride, object addr) {
			GCHandle pp_addr = GCHandle.Alloc(addr, GCHandleType.Pinned);
			try {
				if      (Delegates.pglVariantPointerEXT != null)
					Delegates.pglVariantPointerEXT(id, type, stride, pp_addr.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point VariantPointerEXT cannot be found");
			} finally {
				pp_addr.Free();
			}
			LogProc("glVariantPointerEXT({0}, {1}, {2}, {3})", id, type, stride, addr);
		}

		/// <summary>
		/// Binding for glVariantsvEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="addr">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VariantEXT(UInt32 id, Int16[] addr) {
			unsafe {
				fixed (Int16* fp_addr = addr)
				{
					if      (Delegates.pglVariantsvEXT != null)
						Delegates.pglVariantsvEXT(id, fp_addr);
					else
						throw new InvalidOperationException("binding point VariantEXT cannot be found");
				}
			}
			LogProc("glVariantsvEXT({0}, {1})", id, addr);
		}

		/// <summary>
		/// Binding for glVariantubvEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="addr">
		/// A <see cref="T:System.Byte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VariantEXT(UInt32 id, byte[] addr) {
			unsafe {
				fixed (byte* fp_addr = addr)
				{
					if      (Delegates.pglVariantubvEXT != null)
						Delegates.pglVariantubvEXT(id, fp_addr);
					else
						throw new InvalidOperationException("binding point VariantEXT cannot be found");
				}
			}
			LogProc("glVariantubvEXT({0}, {1})", id, addr);
		}

		/// <summary>
		/// Binding for glVariantuivEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="addr">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VariantEXT(UInt32 id, UInt32[] addr) {
			unsafe {
				fixed (UInt32* fp_addr = addr)
				{
					if      (Delegates.pglVariantuivEXT != null)
						Delegates.pglVariantuivEXT(id, fp_addr);
					else
						throw new InvalidOperationException("binding point VariantEXT cannot be found");
				}
			}
			LogProc("glVariantuivEXT({0}, {1})", id, addr);
		}

		/// <summary>
		/// Binding for glVariantuivEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="addr">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VariantEXT(UInt32 id, UInt32* addr) {
			unsafe {
				if      (Delegates.pglVariantuivEXT != null)
					Delegates.pglVariantuivEXT(id, addr);
				else
					throw new InvalidOperationException("binding point VariantEXT cannot be found");
			}
			LogProc("glVariantuivEXT({0}, {1})", id, "addr");
		}
		

		/// <summary>
		/// Binding for glVariantusvEXT function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="addr">
		/// A <see cref="T:System.UInt16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VariantEXT(UInt32 id, UInt16[] addr) {
			unsafe {
				fixed (UInt16* fp_addr = addr)
				{
					if      (Delegates.pglVariantusvEXT != null)
						Delegates.pglVariantusvEXT(id, fp_addr);
					else
						throw new InvalidOperationException("binding point VariantEXT cannot be found");
				}
			}
			LogProc("glVariantusvEXT({0}, {1})", id, addr);
		}

		/// <summary>
		/// Binding for glVertexArrayVertexAttribLOffsetEXT function.
		/// </summary>
		/// <param name="vaobj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexArrayVertexAttribLOffsetEXT(UInt32 vaobj, UInt32 buffer, UInt32 index, int size, int type, Int32 stride, IntPtr offset) {
			if      (Delegates.pglVertexArrayVertexAttribLOffsetEXT != null)
				Delegates.pglVertexArrayVertexAttribLOffsetEXT(vaobj, buffer, index, size, type, stride, offset);
			else
				throw new InvalidOperationException("binding point VertexArrayVertexAttribLOffsetEXT cannot be found");
			LogProc("glVertexArrayVertexAttribLOffsetEXT({0}, {1}, {2}, {3}, {4}, {5}, {6})", vaobj, buffer, index, size, type, stride, offset);
		}

		/// <summary>
		/// Binding for glVertexAttribI1iEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void VertexAttribI1EXT(UInt32 index, int x) {
			if      (Delegates.pglVertexAttribI1iEXT != null)
				Delegates.pglVertexAttribI1iEXT(index, x);
			else
				throw new InvalidOperationException("binding point VertexAttribI1EXT cannot be found");
			LogProc("glVertexAttribI1iEXT({0}, {1})", index, x);
		}

		/// <summary>
		/// Binding for glVertexAttribI1ivEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		public static void VertexAttribI1EXT(UInt32 index, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI1ivEXT != null)
						Delegates.pglVertexAttribI1ivEXT(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI1EXT cannot be found");
				}
			}
			LogProc("glVertexAttribI1ivEXT({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI1ivEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void VertexAttribI1EXT(UInt32 index, int* v) {
			unsafe {
				if      (Delegates.pglVertexAttribI1ivEXT != null)
					Delegates.pglVertexAttribI1ivEXT(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribI1EXT cannot be found");
			}
			LogProc("glVertexAttribI1ivEXT({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribI1uiEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void VertexAttribI1EXT(UInt32 index, UInt32 x) {
			if      (Delegates.pglVertexAttribI1uiEXT != null)
				Delegates.pglVertexAttribI1uiEXT(index, x);
			else
				throw new InvalidOperationException("binding point VertexAttribI1EXT cannot be found");
			LogProc("glVertexAttribI1uiEXT({0}, {1})", index, x);
		}

		/// <summary>
		/// Binding for glVertexAttribI1uivEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		public static void VertexAttribI1EXT(UInt32 index, UInt32[] v) {
			unsafe {
				fixed (UInt32* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI1uivEXT != null)
						Delegates.pglVertexAttribI1uivEXT(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI1EXT cannot be found");
				}
			}
			LogProc("glVertexAttribI1uivEXT({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI1uivEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void VertexAttribI1EXT(UInt32 index, UInt32* v) {
			unsafe {
				if      (Delegates.pglVertexAttribI1uivEXT != null)
					Delegates.pglVertexAttribI1uivEXT(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribI1EXT cannot be found");
			}
			LogProc("glVertexAttribI1uivEXT({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribI2iEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void VertexAttribI2EXT(UInt32 index, int x, int y) {
			if      (Delegates.pglVertexAttribI2iEXT != null)
				Delegates.pglVertexAttribI2iEXT(index, x, y);
			else
				throw new InvalidOperationException("binding point VertexAttribI2EXT cannot be found");
			LogProc("glVertexAttribI2iEXT({0}, {1}, {2})", index, x, y);
		}

		/// <summary>
		/// Binding for glVertexAttribI2ivEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		public static void VertexAttribI2EXT(UInt32 index, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI2ivEXT != null)
						Delegates.pglVertexAttribI2ivEXT(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI2EXT cannot be found");
				}
			}
			LogProc("glVertexAttribI2ivEXT({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI2ivEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void VertexAttribI2EXT(UInt32 index, int* v) {
			unsafe {
				if      (Delegates.pglVertexAttribI2ivEXT != null)
					Delegates.pglVertexAttribI2ivEXT(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribI2EXT cannot be found");
			}
			LogProc("glVertexAttribI2ivEXT({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribI2uiEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void VertexAttribI2EXT(UInt32 index, UInt32 x, UInt32 y) {
			if      (Delegates.pglVertexAttribI2uiEXT != null)
				Delegates.pglVertexAttribI2uiEXT(index, x, y);
			else
				throw new InvalidOperationException("binding point VertexAttribI2EXT cannot be found");
			LogProc("glVertexAttribI2uiEXT({0}, {1}, {2})", index, x, y);
		}

		/// <summary>
		/// Binding for glVertexAttribI2uivEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		public static void VertexAttribI2EXT(UInt32 index, UInt32[] v) {
			unsafe {
				fixed (UInt32* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI2uivEXT != null)
						Delegates.pglVertexAttribI2uivEXT(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI2EXT cannot be found");
				}
			}
			LogProc("glVertexAttribI2uivEXT({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI2uivEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void VertexAttribI2EXT(UInt32 index, UInt32* v) {
			unsafe {
				if      (Delegates.pglVertexAttribI2uivEXT != null)
					Delegates.pglVertexAttribI2uivEXT(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribI2EXT cannot be found");
			}
			LogProc("glVertexAttribI2uivEXT({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribI3iEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void VertexAttribI3EXT(UInt32 index, int x, int y, int z) {
			if      (Delegates.pglVertexAttribI3iEXT != null)
				Delegates.pglVertexAttribI3iEXT(index, x, y, z);
			else
				throw new InvalidOperationException("binding point VertexAttribI3EXT cannot be found");
			LogProc("glVertexAttribI3iEXT({0}, {1}, {2}, {3})", index, x, y, z);
		}

		/// <summary>
		/// Binding for glVertexAttribI3ivEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		public static void VertexAttribI3EXT(UInt32 index, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI3ivEXT != null)
						Delegates.pglVertexAttribI3ivEXT(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI3EXT cannot be found");
				}
			}
			LogProc("glVertexAttribI3ivEXT({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI3ivEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void VertexAttribI3EXT(UInt32 index, int* v) {
			unsafe {
				if      (Delegates.pglVertexAttribI3ivEXT != null)
					Delegates.pglVertexAttribI3ivEXT(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribI3EXT cannot be found");
			}
			LogProc("glVertexAttribI3ivEXT({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribI3uiEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void VertexAttribI3EXT(UInt32 index, UInt32 x, UInt32 y, UInt32 z) {
			if      (Delegates.pglVertexAttribI3uiEXT != null)
				Delegates.pglVertexAttribI3uiEXT(index, x, y, z);
			else
				throw new InvalidOperationException("binding point VertexAttribI3EXT cannot be found");
			LogProc("glVertexAttribI3uiEXT({0}, {1}, {2}, {3})", index, x, y, z);
		}

		/// <summary>
		/// Binding for glVertexAttribI3uivEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		public static void VertexAttribI3EXT(UInt32 index, UInt32[] v) {
			unsafe {
				fixed (UInt32* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI3uivEXT != null)
						Delegates.pglVertexAttribI3uivEXT(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI3EXT cannot be found");
				}
			}
			LogProc("glVertexAttribI3uivEXT({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI3uivEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void VertexAttribI3EXT(UInt32 index, UInt32* v) {
			unsafe {
				if      (Delegates.pglVertexAttribI3uivEXT != null)
					Delegates.pglVertexAttribI3uivEXT(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribI3EXT cannot be found");
			}
			LogProc("glVertexAttribI3uivEXT({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribI4bvEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.SByte*"/>.
		/// </param>
		public static void VertexAttribI4EXT(UInt32 index, sbyte[] v) {
			unsafe {
				fixed (sbyte* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI4bvEXT != null)
						Delegates.pglVertexAttribI4bvEXT(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI4EXT cannot be found");
				}
			}
			LogProc("glVertexAttribI4bvEXT({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI4iEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void VertexAttribI4EXT(UInt32 index, int x, int y, int z, int w) {
			if      (Delegates.pglVertexAttribI4iEXT != null)
				Delegates.pglVertexAttribI4iEXT(index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point VertexAttribI4EXT cannot be found");
			LogProc("glVertexAttribI4iEXT({0}, {1}, {2}, {3}, {4})", index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glVertexAttribI4ivEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		public static void VertexAttribI4EXT(UInt32 index, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI4ivEXT != null)
						Delegates.pglVertexAttribI4ivEXT(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI4EXT cannot be found");
				}
			}
			LogProc("glVertexAttribI4ivEXT({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI4ivEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		public static void VertexAttribI4EXT(UInt32 index, int* v) {
			unsafe {
				if      (Delegates.pglVertexAttribI4ivEXT != null)
					Delegates.pglVertexAttribI4ivEXT(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribI4EXT cannot be found");
			}
			LogProc("glVertexAttribI4ivEXT({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribI4svEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		public static void VertexAttribI4EXT(UInt32 index, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI4svEXT != null)
						Delegates.pglVertexAttribI4svEXT(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI4EXT cannot be found");
				}
			}
			LogProc("glVertexAttribI4svEXT({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI4ubvEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Byte*"/>.
		/// </param>
		public static void VertexAttribI4EXT(UInt32 index, byte[] v) {
			unsafe {
				fixed (byte* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI4ubvEXT != null)
						Delegates.pglVertexAttribI4ubvEXT(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI4EXT cannot be found");
				}
			}
			LogProc("glVertexAttribI4ubvEXT({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI4uiEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void VertexAttribI4EXT(UInt32 index, UInt32 x, UInt32 y, UInt32 z, UInt32 w) {
			if      (Delegates.pglVertexAttribI4uiEXT != null)
				Delegates.pglVertexAttribI4uiEXT(index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point VertexAttribI4EXT cannot be found");
			LogProc("glVertexAttribI4uiEXT({0}, {1}, {2}, {3}, {4})", index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glVertexAttribI4uivEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		public static void VertexAttribI4EXT(UInt32 index, UInt32[] v) {
			unsafe {
				fixed (UInt32* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI4uivEXT != null)
						Delegates.pglVertexAttribI4uivEXT(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI4EXT cannot be found");
				}
			}
			LogProc("glVertexAttribI4uivEXT({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI4uivEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		public static void VertexAttribI4EXT(UInt32 index, UInt32* v) {
			unsafe {
				if      (Delegates.pglVertexAttribI4uivEXT != null)
					Delegates.pglVertexAttribI4uivEXT(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribI4EXT cannot be found");
			}
			LogProc("glVertexAttribI4uivEXT({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribI4usvEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt16*"/>.
		/// </param>
		public static void VertexAttribI4EXT(UInt32 index, UInt16[] v) {
			unsafe {
				fixed (UInt16* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI4usvEXT != null)
						Delegates.pglVertexAttribI4usvEXT(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI4EXT cannot be found");
				}
			}
			LogProc("glVertexAttribI4usvEXT({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribIPointerEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		public static void VertexAttribIPointerEXT(UInt32 index, int size, int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglVertexAttribIPointerEXT != null)
					Delegates.pglVertexAttribIPointerEXT(index, size, type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point VertexAttribIPointerEXT cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glVertexAttribIPointerEXT({0}, {1}, {2}, {3}, {4})", index, size, type, stride, pointer);
		}

		/// <summary>
		/// Binding for glVertexAttribL1dEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL1EXT(UInt32 index, double x) {
			if      (Delegates.pglVertexAttribL1dEXT != null)
				Delegates.pglVertexAttribL1dEXT(index, x);
			else
				throw new InvalidOperationException("binding point VertexAttribL1EXT cannot be found");
			LogProc("glVertexAttribL1dEXT({0}, {1})", index, x);
		}

		/// <summary>
		/// Binding for glVertexAttribL1dvEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL1EXT(UInt32 index, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertexAttribL1dvEXT != null)
						Delegates.pglVertexAttribL1dvEXT(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribL1EXT cannot be found");
				}
			}
			LogProc("glVertexAttribL1dvEXT({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribL1dvEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL1EXT(UInt32 index, double* v) {
			unsafe {
				if      (Delegates.pglVertexAttribL1dvEXT != null)
					Delegates.pglVertexAttribL1dvEXT(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribL1EXT cannot be found");
			}
			LogProc("glVertexAttribL1dvEXT({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribL2dEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL2EXT(UInt32 index, double x, double y) {
			if      (Delegates.pglVertexAttribL2dEXT != null)
				Delegates.pglVertexAttribL2dEXT(index, x, y);
			else
				throw new InvalidOperationException("binding point VertexAttribL2EXT cannot be found");
			LogProc("glVertexAttribL2dEXT({0}, {1}, {2})", index, x, y);
		}

		/// <summary>
		/// Binding for glVertexAttribL2dvEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL2EXT(UInt32 index, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertexAttribL2dvEXT != null)
						Delegates.pglVertexAttribL2dvEXT(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribL2EXT cannot be found");
				}
			}
			LogProc("glVertexAttribL2dvEXT({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribL2dvEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL2EXT(UInt32 index, double* v) {
			unsafe {
				if      (Delegates.pglVertexAttribL2dvEXT != null)
					Delegates.pglVertexAttribL2dvEXT(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribL2EXT cannot be found");
			}
			LogProc("glVertexAttribL2dvEXT({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribL3dEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL3EXT(UInt32 index, double x, double y, double z) {
			if      (Delegates.pglVertexAttribL3dEXT != null)
				Delegates.pglVertexAttribL3dEXT(index, x, y, z);
			else
				throw new InvalidOperationException("binding point VertexAttribL3EXT cannot be found");
			LogProc("glVertexAttribL3dEXT({0}, {1}, {2}, {3})", index, x, y, z);
		}

		/// <summary>
		/// Binding for glVertexAttribL3dvEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL3EXT(UInt32 index, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertexAttribL3dvEXT != null)
						Delegates.pglVertexAttribL3dvEXT(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribL3EXT cannot be found");
				}
			}
			LogProc("glVertexAttribL3dvEXT({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribL3dvEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL3EXT(UInt32 index, double* v) {
			unsafe {
				if      (Delegates.pglVertexAttribL3dvEXT != null)
					Delegates.pglVertexAttribL3dvEXT(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribL3EXT cannot be found");
			}
			LogProc("glVertexAttribL3dvEXT({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribL4dEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL4EXT(UInt32 index, double x, double y, double z, double w) {
			if      (Delegates.pglVertexAttribL4dEXT != null)
				Delegates.pglVertexAttribL4dEXT(index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point VertexAttribL4EXT cannot be found");
			LogProc("glVertexAttribL4dEXT({0}, {1}, {2}, {3}, {4})", index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glVertexAttribL4dvEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL4EXT(UInt32 index, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertexAttribL4dvEXT != null)
						Delegates.pglVertexAttribL4dvEXT(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribL4EXT cannot be found");
				}
			}
			LogProc("glVertexAttribL4dvEXT({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribL4dvEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL4EXT(UInt32 index, double* v) {
			unsafe {
				if      (Delegates.pglVertexAttribL4dvEXT != null)
					Delegates.pglVertexAttribL4dvEXT(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribL4EXT cannot be found");
			}
			LogProc("glVertexAttribL4dvEXT({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribLPointerEXT function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribLPointerEXT(UInt32 index, int size, int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglVertexAttribLPointerEXT != null)
					Delegates.pglVertexAttribLPointerEXT(index, size, type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point VertexAttribLPointerEXT cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glVertexAttribLPointerEXT({0}, {1}, {2}, {3}, {4})", index, size, type, stride, pointer);
		}

		/// <summary>
		/// Binding for glVertexPointerEXT function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void VertexPointerEXT(int size, int type, Int32 stride, Int32 count, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglVertexPointerEXT != null)
					Delegates.pglVertexPointerEXT(size, type, stride, count, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point VertexPointerEXT cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glVertexPointerEXT({0}, {1}, {2}, {3}, {4})", size, type, stride, count, pointer);
		}

		/// <summary>
		/// Binding for glVertexWeightfEXT function.
		/// </summary>
		/// <param name="weight">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void VertexWeightEXT(float weight) {
			if      (Delegates.pglVertexWeightfEXT != null)
				Delegates.pglVertexWeightfEXT(weight);
			else
				throw new InvalidOperationException("binding point VertexWeightEXT cannot be found");
			LogProc("glVertexWeightfEXT({0})", weight);
		}

		/// <summary>
		/// Binding for glVertexWeightfvEXT function.
		/// </summary>
		/// <param name="weight">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void VertexWeightEXT(float[] weight) {
			unsafe {
				fixed (float* fp_weight = weight)
				{
					if      (Delegates.pglVertexWeightfvEXT != null)
						Delegates.pglVertexWeightfvEXT(fp_weight);
					else
						throw new InvalidOperationException("binding point VertexWeightEXT cannot be found");
				}
			}
			LogProc("glVertexWeightfvEXT({0})", weight);
		}

		/// <summary>
		/// Binding for glVertexWeightfvEXT function.
		/// </summary>
		/// <param name="weight">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void VertexWeightEXT(float* weight) {
			unsafe {
				if      (Delegates.pglVertexWeightfvEXT != null)
					Delegates.pglVertexWeightfvEXT(weight);
				else
					throw new InvalidOperationException("binding point VertexWeightEXT cannot be found");
			}
			LogProc("glVertexWeightfvEXT({0})", "weight");
		}
		

		/// <summary>
		/// Binding for glVertexWeightPointerEXT function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void VertexWeightPointerEXT(Int32 size, int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglVertexWeightPointerEXT != null)
					Delegates.pglVertexWeightPointerEXT(size, type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point VertexWeightPointerEXT cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glVertexWeightPointerEXT({0}, {1}, {2}, {3})", size, type, stride, pointer);
		}

		/// <summary>
		/// Binding for glWriteMaskEXT function.
		/// </summary>
		/// <param name="res">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="in">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="outX">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="outY">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="outZ">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="outW">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void WriteMaskEXT(UInt32 res, UInt32 @in, int outX, int outY, int outZ, int outW) {
			if      (Delegates.pglWriteMaskEXT != null)
				Delegates.pglWriteMaskEXT(res, @in, outX, outY, outZ, outW);
			else
				throw new InvalidOperationException("binding point WriteMaskEXT cannot be found");
			LogProc("glWriteMaskEXT({0}, {1}, {2}, {3}, {4}, {5})", res, @in, outX, outY, outZ, outW);
		}

		internal static partial class Delegates
		{
			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glActiveProgramEXT(UInt32 program);
			[ThreadStatic]
			internal static glActiveProgramEXT pglActiveProgramEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glActiveStencilFaceEXT(int face);
			[ThreadStatic]
			internal static glActiveStencilFaceEXT pglActiveStencilFaceEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glApplyTextureEXT(int mode);
			[ThreadStatic]
			internal static glApplyTextureEXT pglApplyTextureEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate bool glAreTexturesResidentEXT(Int32 n, UInt32* textures, [Out] bool* residences);
			[ThreadStatic]
			internal static glAreTexturesResidentEXT pglAreTexturesResidentEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glArrayElementEXT(int i);
			[ThreadStatic]
			internal static glArrayElementEXT pglArrayElementEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBeginTransformFeedbackEXT(int primitiveMode);
			[ThreadStatic]
			internal static glBeginTransformFeedbackEXT pglBeginTransformFeedbackEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBeginVertexShaderEXT();
			[ThreadStatic]
			internal static glBeginVertexShaderEXT pglBeginVertexShaderEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindBufferBaseEXT(int target, UInt32 index, UInt32 buffer);
			[ThreadStatic]
			internal static glBindBufferBaseEXT pglBindBufferBaseEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindBufferOffsetEXT(int target, UInt32 index, UInt32 buffer, IntPtr offset);
			[ThreadStatic]
			internal static glBindBufferOffsetEXT pglBindBufferOffsetEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindBufferRangeEXT(int target, UInt32 index, UInt32 buffer, IntPtr offset, UInt32 size);
			[ThreadStatic]
			internal static glBindBufferRangeEXT pglBindBufferRangeEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindFragDataLocationEXT(UInt32 program, UInt32 color, string name);
			[ThreadStatic]
			internal static glBindFragDataLocationEXT pglBindFragDataLocationEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindFramebufferEXT(int target, UInt32 framebuffer);
			[ThreadStatic]
			internal static glBindFramebufferEXT pglBindFramebufferEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindImageTextureEXT(UInt32 index, UInt32 texture, int level, bool layered, int layer, int access, int format);
			[ThreadStatic]
			internal static glBindImageTextureEXT pglBindImageTextureEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 glBindLightParameterEXT(int light, int value);
			[ThreadStatic]
			internal static glBindLightParameterEXT pglBindLightParameterEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 glBindMaterialParameterEXT(int face, int value);
			[ThreadStatic]
			internal static glBindMaterialParameterEXT pglBindMaterialParameterEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindMultiTextureEXT(int texunit, int target, UInt32 texture);
			[ThreadStatic]
			internal static glBindMultiTextureEXT pglBindMultiTextureEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 glBindParameterEXT(int value);
			[ThreadStatic]
			internal static glBindParameterEXT pglBindParameterEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindRenderbufferEXT(int target, UInt32 renderbuffer);
			[ThreadStatic]
			internal static glBindRenderbufferEXT pglBindRenderbufferEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 glBindTexGenParameterEXT(int unit, int coord, int value);
			[ThreadStatic]
			internal static glBindTexGenParameterEXT pglBindTexGenParameterEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindTextureEXT(int target, UInt32 texture);
			[ThreadStatic]
			internal static glBindTextureEXT pglBindTextureEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 glBindTextureUnitParameterEXT(int unit, int value);
			[ThreadStatic]
			internal static glBindTextureUnitParameterEXT pglBindTextureUnitParameterEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindVertexShaderEXT(UInt32 id);
			[ThreadStatic]
			internal static glBindVertexShaderEXT pglBindVertexShaderEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBinormal3bEXT(sbyte bx, sbyte by, sbyte bz);
			[ThreadStatic]
			internal static glBinormal3bEXT pglBinormal3bEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glBinormal3bvEXT(sbyte* v);
			[ThreadStatic]
			internal static glBinormal3bvEXT pglBinormal3bvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBinormal3dEXT(double bx, double by, double bz);
			[ThreadStatic]
			internal static glBinormal3dEXT pglBinormal3dEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glBinormal3dvEXT(double* v);
			[ThreadStatic]
			internal static glBinormal3dvEXT pglBinormal3dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBinormal3fEXT(float bx, float by, float bz);
			[ThreadStatic]
			internal static glBinormal3fEXT pglBinormal3fEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glBinormal3fvEXT(float* v);
			[ThreadStatic]
			internal static glBinormal3fvEXT pglBinormal3fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBinormal3iEXT(int bx, int by, int bz);
			[ThreadStatic]
			internal static glBinormal3iEXT pglBinormal3iEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glBinormal3ivEXT(int* v);
			[ThreadStatic]
			internal static glBinormal3ivEXT pglBinormal3ivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBinormal3sEXT(Int16 bx, Int16 by, Int16 bz);
			[ThreadStatic]
			internal static glBinormal3sEXT pglBinormal3sEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glBinormal3svEXT(Int16* v);
			[ThreadStatic]
			internal static glBinormal3svEXT pglBinormal3svEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBinormalPointerEXT(int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glBinormalPointerEXT pglBinormalPointerEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlendColorEXT(float red, float green, float blue, float alpha);
			[ThreadStatic]
			internal static glBlendColorEXT pglBlendColorEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlendEquationEXT(int mode);
			[ThreadStatic]
			internal static glBlendEquationEXT pglBlendEquationEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlendEquationSeparateEXT(int modeRGB, int modeAlpha);
			[ThreadStatic]
			internal static glBlendEquationSeparateEXT pglBlendEquationSeparateEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlendFuncSeparateEXT(int sfactorRGB, int dfactorRGB, int sfactorAlpha, int dfactorAlpha);
			[ThreadStatic]
			internal static glBlendFuncSeparateEXT pglBlendFuncSeparateEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlitFramebufferEXT(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, int filter);
			[ThreadStatic]
			internal static glBlitFramebufferEXT pglBlitFramebufferEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glCheckFramebufferStatusEXT(int target);
			[ThreadStatic]
			internal static glCheckFramebufferStatusEXT pglCheckFramebufferStatusEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glCheckNamedFramebufferStatusEXT(UInt32 framebuffer, int target);
			[ThreadStatic]
			internal static glCheckNamedFramebufferStatusEXT pglCheckNamedFramebufferStatusEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glClearColorIiEXT(int red, int green, int blue, int alpha);
			[ThreadStatic]
			internal static glClearColorIiEXT pglClearColorIiEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glClearColorIuiEXT(UInt32 red, UInt32 green, UInt32 blue, UInt32 alpha);
			[ThreadStatic]
			internal static glClearColorIuiEXT pglClearColorIuiEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glClientAttribDefaultEXT(uint mask);
			[ThreadStatic]
			internal static glClientAttribDefaultEXT pglClientAttribDefaultEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColorMaskIndexedEXT(UInt32 index, bool r, bool g, bool b, bool a);
			[ThreadStatic]
			internal static glColorMaskIndexedEXT pglColorMaskIndexedEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColorPointerEXT(int size, int type, Int32 stride, Int32 count, IntPtr pointer);
			[ThreadStatic]
			internal static glColorPointerEXT pglColorPointerEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColorSubTableEXT(int target, Int32 start, Int32 count, int format, int type, IntPtr data);
			[ThreadStatic]
			internal static glColorSubTableEXT pglColorSubTableEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColorTableEXT(int target, int internalFormat, Int32 width, int format, int type, IntPtr table);
			[ThreadStatic]
			internal static glColorTableEXT pglColorTableEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedMultiTexImage1DEXT(int texunit, int target, int level, int internalformat, Int32 width, int border, Int32 imageSize, IntPtr bits);
			[ThreadStatic]
			internal static glCompressedMultiTexImage1DEXT pglCompressedMultiTexImage1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedMultiTexImage2DEXT(int texunit, int target, int level, int internalformat, Int32 width, Int32 height, int border, Int32 imageSize, IntPtr bits);
			[ThreadStatic]
			internal static glCompressedMultiTexImage2DEXT pglCompressedMultiTexImage2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedMultiTexImage3DEXT(int texunit, int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, Int32 imageSize, IntPtr bits);
			[ThreadStatic]
			internal static glCompressedMultiTexImage3DEXT pglCompressedMultiTexImage3DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedMultiTexSubImage1DEXT(int texunit, int target, int level, int xoffset, Int32 width, int format, Int32 imageSize, IntPtr bits);
			[ThreadStatic]
			internal static glCompressedMultiTexSubImage1DEXT pglCompressedMultiTexSubImage1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedMultiTexSubImage2DEXT(int texunit, int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, Int32 imageSize, IntPtr bits);
			[ThreadStatic]
			internal static glCompressedMultiTexSubImage2DEXT pglCompressedMultiTexSubImage2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedMultiTexSubImage3DEXT(int texunit, int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, Int32 imageSize, IntPtr bits);
			[ThreadStatic]
			internal static glCompressedMultiTexSubImage3DEXT pglCompressedMultiTexSubImage3DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedTextureImage1DEXT(UInt32 texture, int target, int level, int internalformat, Int32 width, int border, Int32 imageSize, IntPtr bits);
			[ThreadStatic]
			internal static glCompressedTextureImage1DEXT pglCompressedTextureImage1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedTextureImage2DEXT(UInt32 texture, int target, int level, int internalformat, Int32 width, Int32 height, int border, Int32 imageSize, IntPtr bits);
			[ThreadStatic]
			internal static glCompressedTextureImage2DEXT pglCompressedTextureImage2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedTextureImage3DEXT(UInt32 texture, int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, Int32 imageSize, IntPtr bits);
			[ThreadStatic]
			internal static glCompressedTextureImage3DEXT pglCompressedTextureImage3DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedTextureSubImage1DEXT(UInt32 texture, int target, int level, int xoffset, Int32 width, int format, Int32 imageSize, IntPtr bits);
			[ThreadStatic]
			internal static glCompressedTextureSubImage1DEXT pglCompressedTextureSubImage1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedTextureSubImage2DEXT(UInt32 texture, int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, Int32 imageSize, IntPtr bits);
			[ThreadStatic]
			internal static glCompressedTextureSubImage2DEXT pglCompressedTextureSubImage2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedTextureSubImage3DEXT(UInt32 texture, int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, Int32 imageSize, IntPtr bits);
			[ThreadStatic]
			internal static glCompressedTextureSubImage3DEXT pglCompressedTextureSubImage3DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glConvolutionFilter1DEXT(int target, int internalformat, Int32 width, int format, int type, IntPtr image);
			[ThreadStatic]
			internal static glConvolutionFilter1DEXT pglConvolutionFilter1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glConvolutionFilter2DEXT(int target, int internalformat, Int32 width, Int32 height, int format, int type, IntPtr image);
			[ThreadStatic]
			internal static glConvolutionFilter2DEXT pglConvolutionFilter2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glConvolutionParameterfEXT(int target, int pname, float @params);
			[ThreadStatic]
			internal static glConvolutionParameterfEXT pglConvolutionParameterfEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glConvolutionParameterfvEXT(int target, int pname, float* @params);
			[ThreadStatic]
			internal static glConvolutionParameterfvEXT pglConvolutionParameterfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glConvolutionParameteriEXT(int target, int pname, int @params);
			[ThreadStatic]
			internal static glConvolutionParameteriEXT pglConvolutionParameteriEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glConvolutionParameterivEXT(int target, int pname, int* @params);
			[ThreadStatic]
			internal static glConvolutionParameterivEXT pglConvolutionParameterivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyColorSubTableEXT(int target, Int32 start, int x, int y, Int32 width);
			[ThreadStatic]
			internal static glCopyColorSubTableEXT pglCopyColorSubTableEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyConvolutionFilter1DEXT(int target, int internalformat, int x, int y, Int32 width);
			[ThreadStatic]
			internal static glCopyConvolutionFilter1DEXT pglCopyConvolutionFilter1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyConvolutionFilter2DEXT(int target, int internalformat, int x, int y, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glCopyConvolutionFilter2DEXT pglCopyConvolutionFilter2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyMultiTexImage1DEXT(int texunit, int target, int level, int internalformat, int x, int y, Int32 width, int border);
			[ThreadStatic]
			internal static glCopyMultiTexImage1DEXT pglCopyMultiTexImage1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyMultiTexImage2DEXT(int texunit, int target, int level, int internalformat, int x, int y, Int32 width, Int32 height, int border);
			[ThreadStatic]
			internal static glCopyMultiTexImage2DEXT pglCopyMultiTexImage2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyMultiTexSubImage1DEXT(int texunit, int target, int level, int xoffset, int x, int y, Int32 width);
			[ThreadStatic]
			internal static glCopyMultiTexSubImage1DEXT pglCopyMultiTexSubImage1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyMultiTexSubImage2DEXT(int texunit, int target, int level, int xoffset, int yoffset, int x, int y, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glCopyMultiTexSubImage2DEXT pglCopyMultiTexSubImage2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyMultiTexSubImage3DEXT(int texunit, int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glCopyMultiTexSubImage3DEXT pglCopyMultiTexSubImage3DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyTexImage1DEXT(int target, int level, int internalformat, int x, int y, Int32 width, int border);
			[ThreadStatic]
			internal static glCopyTexImage1DEXT pglCopyTexImage1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyTexImage2DEXT(int target, int level, int internalformat, int x, int y, Int32 width, Int32 height, int border);
			[ThreadStatic]
			internal static glCopyTexImage2DEXT pglCopyTexImage2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyTexSubImage1DEXT(int target, int level, int xoffset, int x, int y, Int32 width);
			[ThreadStatic]
			internal static glCopyTexSubImage1DEXT pglCopyTexSubImage1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyTexSubImage2DEXT(int target, int level, int xoffset, int yoffset, int x, int y, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glCopyTexSubImage2DEXT pglCopyTexSubImage2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyTexSubImage3DEXT(int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glCopyTexSubImage3DEXT pglCopyTexSubImage3DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyTextureImage1DEXT(UInt32 texture, int target, int level, int internalformat, int x, int y, Int32 width, int border);
			[ThreadStatic]
			internal static glCopyTextureImage1DEXT pglCopyTextureImage1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyTextureImage2DEXT(UInt32 texture, int target, int level, int internalformat, int x, int y, Int32 width, Int32 height, int border);
			[ThreadStatic]
			internal static glCopyTextureImage2DEXT pglCopyTextureImage2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyTextureSubImage1DEXT(UInt32 texture, int target, int level, int xoffset, int x, int y, Int32 width);
			[ThreadStatic]
			internal static glCopyTextureSubImage1DEXT pglCopyTextureSubImage1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyTextureSubImage2DEXT(UInt32 texture, int target, int level, int xoffset, int yoffset, int x, int y, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glCopyTextureSubImage2DEXT pglCopyTextureSubImage2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyTextureSubImage3DEXT(UInt32 texture, int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glCopyTextureSubImage3DEXT pglCopyTextureSubImage3DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 glCreateShaderProgramEXT(int type, string @string);
			[ThreadStatic]
			internal static glCreateShaderProgramEXT pglCreateShaderProgramEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glCullParameterdvEXT(int pname, [Out] double* @params);
			[ThreadStatic]
			internal static glCullParameterdvEXT pglCullParameterdvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glCullParameterfvEXT(int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glCullParameterfvEXT pglCullParameterfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDeleteFramebuffersEXT(Int32 n, UInt32* framebuffers);
			[ThreadStatic]
			internal static glDeleteFramebuffersEXT pglDeleteFramebuffersEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDeleteRenderbuffersEXT(Int32 n, UInt32* renderbuffers);
			[ThreadStatic]
			internal static glDeleteRenderbuffersEXT pglDeleteRenderbuffersEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDeleteTexturesEXT(Int32 n, UInt32* textures);
			[ThreadStatic]
			internal static glDeleteTexturesEXT pglDeleteTexturesEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDeleteVertexShaderEXT(UInt32 id);
			[ThreadStatic]
			internal static glDeleteVertexShaderEXT pglDeleteVertexShaderEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDepthBoundsEXT(double zmin, double zmax);
			[ThreadStatic]
			internal static glDepthBoundsEXT pglDepthBoundsEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDisableClientStateIndexedEXT(int array, UInt32 index);
			[ThreadStatic]
			internal static glDisableClientStateIndexedEXT pglDisableClientStateIndexedEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDisableIndexedEXT(int target, UInt32 index);
			[ThreadStatic]
			internal static glDisableIndexedEXT pglDisableIndexedEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDisableVariantClientStateEXT(UInt32 id);
			[ThreadStatic]
			internal static glDisableVariantClientStateEXT pglDisableVariantClientStateEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawArraysEXT(int mode, int first, Int32 count);
			[ThreadStatic]
			internal static glDrawArraysEXT pglDrawArraysEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawArraysInstancedEXT(int mode, int start, Int32 count, Int32 primcount);
			[ThreadStatic]
			internal static glDrawArraysInstancedEXT pglDrawArraysInstancedEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawElementsInstancedEXT(int mode, Int32 count, int type, IntPtr indices, Int32 primcount);
			[ThreadStatic]
			internal static glDrawElementsInstancedEXT pglDrawElementsInstancedEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawRangeElementsEXT(int mode, UInt32 start, UInt32 end, Int32 count, int type, IntPtr indices);
			[ThreadStatic]
			internal static glDrawRangeElementsEXT pglDrawRangeElementsEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glEdgeFlagPointerEXT(Int32 stride, Int32 count, bool* pointer);
			[ThreadStatic]
			internal static glEdgeFlagPointerEXT pglEdgeFlagPointerEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEnableClientStateIndexedEXT(int array, UInt32 index);
			[ThreadStatic]
			internal static glEnableClientStateIndexedEXT pglEnableClientStateIndexedEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEnableIndexedEXT(int target, UInt32 index);
			[ThreadStatic]
			internal static glEnableIndexedEXT pglEnableIndexedEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEnableVariantClientStateEXT(UInt32 id);
			[ThreadStatic]
			internal static glEnableVariantClientStateEXT pglEnableVariantClientStateEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEndTransformFeedbackEXT();
			[ThreadStatic]
			internal static glEndTransformFeedbackEXT pglEndTransformFeedbackEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEndVertexShaderEXT();
			[ThreadStatic]
			internal static glEndVertexShaderEXT pglEndVertexShaderEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glExtractComponentEXT(UInt32 res, UInt32 src, UInt32 num);
			[ThreadStatic]
			internal static glExtractComponentEXT pglExtractComponentEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFlushMappedNamedBufferRangeEXT(UInt32 buffer, IntPtr offset, UInt32 length);
			[ThreadStatic]
			internal static glFlushMappedNamedBufferRangeEXT pglFlushMappedNamedBufferRangeEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFogCoorddEXT(double coord);
			[ThreadStatic]
			internal static glFogCoorddEXT pglFogCoorddEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glFogCoorddvEXT(double* coord);
			[ThreadStatic]
			internal static glFogCoorddvEXT pglFogCoorddvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFogCoordfEXT(float coord);
			[ThreadStatic]
			internal static glFogCoordfEXT pglFogCoordfEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glFogCoordfvEXT(float* coord);
			[ThreadStatic]
			internal static glFogCoordfvEXT pglFogCoordfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFogCoordPointerEXT(int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glFogCoordPointerEXT pglFogCoordPointerEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFramebufferDrawBufferEXT(UInt32 framebuffer, int mode);
			[ThreadStatic]
			internal static glFramebufferDrawBufferEXT pglFramebufferDrawBufferEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glFramebufferDrawBuffersEXT(UInt32 framebuffer, Int32 n, int* bufs);
			[ThreadStatic]
			internal static glFramebufferDrawBuffersEXT pglFramebufferDrawBuffersEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFramebufferReadBufferEXT(UInt32 framebuffer, int mode);
			[ThreadStatic]
			internal static glFramebufferReadBufferEXT pglFramebufferReadBufferEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFramebufferRenderbufferEXT(int target, int attachment, int renderbuffertarget, UInt32 renderbuffer);
			[ThreadStatic]
			internal static glFramebufferRenderbufferEXT pglFramebufferRenderbufferEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFramebufferTexture1DEXT(int target, int attachment, int textarget, UInt32 texture, int level);
			[ThreadStatic]
			internal static glFramebufferTexture1DEXT pglFramebufferTexture1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFramebufferTexture2DEXT(int target, int attachment, int textarget, UInt32 texture, int level);
			[ThreadStatic]
			internal static glFramebufferTexture2DEXT pglFramebufferTexture2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFramebufferTexture3DEXT(int target, int attachment, int textarget, UInt32 texture, int level, int zoffset);
			[ThreadStatic]
			internal static glFramebufferTexture3DEXT pglFramebufferTexture3DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFramebufferTextureEXT(int target, int attachment, UInt32 texture, int level);
			[ThreadStatic]
			internal static glFramebufferTextureEXT pglFramebufferTextureEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFramebufferTextureFaceEXT(int target, int attachment, UInt32 texture, int level, int face);
			[ThreadStatic]
			internal static glFramebufferTextureFaceEXT pglFramebufferTextureFaceEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFramebufferTextureLayerEXT(int target, int attachment, UInt32 texture, int level, int layer);
			[ThreadStatic]
			internal static glFramebufferTextureLayerEXT pglFramebufferTextureLayerEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGenerateMipmapEXT(int target);
			[ThreadStatic]
			internal static glGenerateMipmapEXT pglGenerateMipmapEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGenerateMultiTexMipmapEXT(int texunit, int target);
			[ThreadStatic]
			internal static glGenerateMultiTexMipmapEXT pglGenerateMultiTexMipmapEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGenerateTextureMipmapEXT(UInt32 texture, int target);
			[ThreadStatic]
			internal static glGenerateTextureMipmapEXT pglGenerateTextureMipmapEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGenFramebuffersEXT(Int32 n, [Out] UInt32* framebuffers);
			[ThreadStatic]
			internal static glGenFramebuffersEXT pglGenFramebuffersEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGenRenderbuffersEXT(Int32 n, [Out] UInt32* renderbuffers);
			[ThreadStatic]
			internal static glGenRenderbuffersEXT pglGenRenderbuffersEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 glGenSymbolsEXT(int datatype, int storagetype, int range, UInt32 components);
			[ThreadStatic]
			internal static glGenSymbolsEXT pglGenSymbolsEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGenTexturesEXT(Int32 n, [Out] UInt32* textures);
			[ThreadStatic]
			internal static glGenTexturesEXT pglGenTexturesEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 glGenVertexShadersEXT(UInt32 range);
			[ThreadStatic]
			internal static glGenVertexShadersEXT pglGenVertexShadersEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetBooleanIndexedvEXT(int target, UInt32 index, [Out] bool* data);
			[ThreadStatic]
			internal static glGetBooleanIndexedvEXT pglGetBooleanIndexedvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetColorTableEXT(int target, int format, int type, [Out] IntPtr data);
			[ThreadStatic]
			internal static glGetColorTableEXT pglGetColorTableEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetColorTableParameterfvEXT(int target, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetColorTableParameterfvEXT pglGetColorTableParameterfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetColorTableParameterivEXT(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetColorTableParameterivEXT pglGetColorTableParameterivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetCompressedMultiTexImageEXT(int texunit, int target, int lod, [Out] IntPtr img);
			[ThreadStatic]
			internal static glGetCompressedMultiTexImageEXT pglGetCompressedMultiTexImageEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetCompressedTextureImageEXT(UInt32 texture, int target, int lod, [Out] IntPtr img);
			[ThreadStatic]
			internal static glGetCompressedTextureImageEXT pglGetCompressedTextureImageEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetConvolutionFilterEXT(int target, int format, int type, [Out] IntPtr image);
			[ThreadStatic]
			internal static glGetConvolutionFilterEXT pglGetConvolutionFilterEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetConvolutionParameterfvEXT(int target, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetConvolutionParameterfvEXT pglGetConvolutionParameterfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetConvolutionParameterivEXT(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetConvolutionParameterivEXT pglGetConvolutionParameterivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetDoubleIndexedvEXT(int target, UInt32 index, [Out] double* data);
			[ThreadStatic]
			internal static glGetDoubleIndexedvEXT pglGetDoubleIndexedvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetFloatIndexedvEXT(int target, UInt32 index, [Out] float* data);
			[ThreadStatic]
			internal static glGetFloatIndexedvEXT pglGetFloatIndexedvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glGetFragDataLocationEXT(UInt32 program, string name);
			[ThreadStatic]
			internal static glGetFragDataLocationEXT pglGetFragDataLocationEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetFramebufferAttachmentParameterivEXT(int target, int attachment, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetFramebufferAttachmentParameterivEXT pglGetFramebufferAttachmentParameterivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetFramebufferParameterivEXT(UInt32 framebuffer, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetFramebufferParameterivEXT pglGetFramebufferParameterivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetHistogramEXT(int target, bool reset, int format, int type, [Out] IntPtr values);
			[ThreadStatic]
			internal static glGetHistogramEXT pglGetHistogramEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetHistogramParameterfvEXT(int target, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetHistogramParameterfvEXT pglGetHistogramParameterfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetHistogramParameterivEXT(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetHistogramParameterivEXT pglGetHistogramParameterivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetIntegerIndexedvEXT(int target, UInt32 index, [Out] int* data);
			[ThreadStatic]
			internal static glGetIntegerIndexedvEXT pglGetIntegerIndexedvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetInvariantBooleanvEXT(UInt32 id, int value, [Out] bool* data);
			[ThreadStatic]
			internal static glGetInvariantBooleanvEXT pglGetInvariantBooleanvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetInvariantFloatvEXT(UInt32 id, int value, [Out] float* data);
			[ThreadStatic]
			internal static glGetInvariantFloatvEXT pglGetInvariantFloatvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetInvariantIntegervEXT(UInt32 id, int value, [Out] int* data);
			[ThreadStatic]
			internal static glGetInvariantIntegervEXT pglGetInvariantIntegervEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetLocalConstantBooleanvEXT(UInt32 id, int value, [Out] bool* data);
			[ThreadStatic]
			internal static glGetLocalConstantBooleanvEXT pglGetLocalConstantBooleanvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetLocalConstantFloatvEXT(UInt32 id, int value, [Out] float* data);
			[ThreadStatic]
			internal static glGetLocalConstantFloatvEXT pglGetLocalConstantFloatvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetLocalConstantIntegervEXT(UInt32 id, int value, [Out] int* data);
			[ThreadStatic]
			internal static glGetLocalConstantIntegervEXT pglGetLocalConstantIntegervEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetMinmaxEXT(int target, bool reset, int format, int type, [Out] IntPtr values);
			[ThreadStatic]
			internal static glGetMinmaxEXT pglGetMinmaxEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMinmaxParameterfvEXT(int target, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetMinmaxParameterfvEXT pglGetMinmaxParameterfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMinmaxParameterivEXT(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetMinmaxParameterivEXT pglGetMinmaxParameterivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMultiTexEnvfvEXT(int texunit, int target, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetMultiTexEnvfvEXT pglGetMultiTexEnvfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMultiTexEnvivEXT(int texunit, int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetMultiTexEnvivEXT pglGetMultiTexEnvivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMultiTexGendvEXT(int texunit, int coord, int pname, [Out] double* @params);
			[ThreadStatic]
			internal static glGetMultiTexGendvEXT pglGetMultiTexGendvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMultiTexGenfvEXT(int texunit, int coord, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetMultiTexGenfvEXT pglGetMultiTexGenfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMultiTexGenivEXT(int texunit, int coord, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetMultiTexGenivEXT pglGetMultiTexGenivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetMultiTexImageEXT(int texunit, int target, int level, int format, int type, [Out] IntPtr pixels);
			[ThreadStatic]
			internal static glGetMultiTexImageEXT pglGetMultiTexImageEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMultiTexLevelParameterfvEXT(int texunit, int target, int level, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetMultiTexLevelParameterfvEXT pglGetMultiTexLevelParameterfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMultiTexLevelParameterivEXT(int texunit, int target, int level, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetMultiTexLevelParameterivEXT pglGetMultiTexLevelParameterivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMultiTexParameterfvEXT(int texunit, int target, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetMultiTexParameterfvEXT pglGetMultiTexParameterfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMultiTexParameterIivEXT(int texunit, int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetMultiTexParameterIivEXT pglGetMultiTexParameterIivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMultiTexParameterIuivEXT(int texunit, int target, int pname, [Out] UInt32* @params);
			[ThreadStatic]
			internal static glGetMultiTexParameterIuivEXT pglGetMultiTexParameterIuivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMultiTexParameterivEXT(int texunit, int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetMultiTexParameterivEXT pglGetMultiTexParameterivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetNamedBufferParameterivEXT(UInt32 buffer, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetNamedBufferParameterivEXT pglGetNamedBufferParameterivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetNamedBufferPointervEXT(UInt32 buffer, int pname, [Out] IntPtr* @params);
			[ThreadStatic]
			internal static glGetNamedBufferPointervEXT pglGetNamedBufferPointervEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetNamedBufferSubDataEXT(UInt32 buffer, IntPtr offset, UInt32 size, [Out] IntPtr data);
			[ThreadStatic]
			internal static glGetNamedBufferSubDataEXT pglGetNamedBufferSubDataEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetNamedFramebufferAttachmentParameterivEXT(UInt32 framebuffer, int attachment, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetNamedFramebufferAttachmentParameterivEXT pglGetNamedFramebufferAttachmentParameterivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetNamedProgramivEXT(UInt32 program, int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetNamedProgramivEXT pglGetNamedProgramivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetNamedProgramLocalParameterdvEXT(UInt32 program, int target, UInt32 index, [Out] double* @params);
			[ThreadStatic]
			internal static glGetNamedProgramLocalParameterdvEXT pglGetNamedProgramLocalParameterdvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetNamedProgramLocalParameterfvEXT(UInt32 program, int target, UInt32 index, [Out] float* @params);
			[ThreadStatic]
			internal static glGetNamedProgramLocalParameterfvEXT pglGetNamedProgramLocalParameterfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetNamedProgramLocalParameterIivEXT(UInt32 program, int target, UInt32 index, [Out] int* @params);
			[ThreadStatic]
			internal static glGetNamedProgramLocalParameterIivEXT pglGetNamedProgramLocalParameterIivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetNamedProgramLocalParameterIuivEXT(UInt32 program, int target, UInt32 index, [Out] UInt32* @params);
			[ThreadStatic]
			internal static glGetNamedProgramLocalParameterIuivEXT pglGetNamedProgramLocalParameterIuivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetNamedProgramStringEXT(UInt32 program, int target, int pname, [Out] IntPtr @string);
			[ThreadStatic]
			internal static glGetNamedProgramStringEXT pglGetNamedProgramStringEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetNamedRenderbufferParameterivEXT(UInt32 renderbuffer, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetNamedRenderbufferParameterivEXT pglGetNamedRenderbufferParameterivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetPointerIndexedvEXT(int target, UInt32 index, [Out] IntPtr* data);
			[ThreadStatic]
			internal static glGetPointerIndexedvEXT pglGetPointerIndexedvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetPointervEXT(int pname, [Out] IntPtr* @params);
			[ThreadStatic]
			internal static glGetPointervEXT pglGetPointervEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetQueryObjecti64vEXT(UInt32 id, int pname, [Out] Int64* @params);
			[ThreadStatic]
			internal static glGetQueryObjecti64vEXT pglGetQueryObjecti64vEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetQueryObjectui64vEXT(UInt32 id, int pname, [Out] UInt64* @params);
			[ThreadStatic]
			internal static glGetQueryObjectui64vEXT pglGetQueryObjectui64vEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetRenderbufferParameterivEXT(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetRenderbufferParameterivEXT pglGetRenderbufferParameterivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetSeparableFilterEXT(int target, int format, int type, [Out] IntPtr row, [Out] IntPtr column, [Out] IntPtr span);
			[ThreadStatic]
			internal static glGetSeparableFilterEXT pglGetSeparableFilterEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTexParameterIivEXT(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetTexParameterIivEXT pglGetTexParameterIivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTexParameterIuivEXT(int target, int pname, [Out] UInt32* @params);
			[ThreadStatic]
			internal static glGetTexParameterIuivEXT pglGetTexParameterIuivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetTextureImageEXT(UInt32 texture, int target, int level, int format, int type, [Out] IntPtr pixels);
			[ThreadStatic]
			internal static glGetTextureImageEXT pglGetTextureImageEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTextureLevelParameterfvEXT(UInt32 texture, int target, int level, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetTextureLevelParameterfvEXT pglGetTextureLevelParameterfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTextureLevelParameterivEXT(UInt32 texture, int target, int level, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetTextureLevelParameterivEXT pglGetTextureLevelParameterivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTextureParameterfvEXT(UInt32 texture, int target, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetTextureParameterfvEXT pglGetTextureParameterfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTextureParameterIivEXT(UInt32 texture, int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetTextureParameterIivEXT pglGetTextureParameterIivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTextureParameterIuivEXT(UInt32 texture, int target, int pname, [Out] UInt32* @params);
			[ThreadStatic]
			internal static glGetTextureParameterIuivEXT pglGetTextureParameterIuivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTextureParameterivEXT(UInt32 texture, int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetTextureParameterivEXT pglGetTextureParameterivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTransformFeedbackVaryingEXT(UInt32 program, UInt32 index, Int32 bufSize, [Out] Int32* length, [Out] Int32* size, [Out] int* type, [Out] StringBuilder name);
			[ThreadStatic]
			internal static glGetTransformFeedbackVaryingEXT pglGetTransformFeedbackVaryingEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glGetUniformBufferSizeEXT(UInt32 program, int location);
			[ThreadStatic]
			internal static glGetUniformBufferSizeEXT pglGetUniformBufferSizeEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate IntPtr glGetUniformOffsetEXT(UInt32 program, int location);
			[ThreadStatic]
			internal static glGetUniformOffsetEXT pglGetUniformOffsetEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetUniformuivEXT(UInt32 program, int location, [Out] UInt32* @params);
			[ThreadStatic]
			internal static glGetUniformuivEXT pglGetUniformuivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetVariantBooleanvEXT(UInt32 id, int value, [Out] bool* data);
			[ThreadStatic]
			internal static glGetVariantBooleanvEXT pglGetVariantBooleanvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetVariantFloatvEXT(UInt32 id, int value, [Out] float* data);
			[ThreadStatic]
			internal static glGetVariantFloatvEXT pglGetVariantFloatvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetVariantIntegervEXT(UInt32 id, int value, [Out] int* data);
			[ThreadStatic]
			internal static glGetVariantIntegervEXT pglGetVariantIntegervEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetVariantPointervEXT(UInt32 id, int value, [Out] IntPtr* data);
			[ThreadStatic]
			internal static glGetVariantPointervEXT pglGetVariantPointervEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetVertexAttribIivEXT(UInt32 index, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetVertexAttribIivEXT pglGetVertexAttribIivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetVertexAttribIuivEXT(UInt32 index, int pname, [Out] UInt32* @params);
			[ThreadStatic]
			internal static glGetVertexAttribIuivEXT pglGetVertexAttribIuivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetVertexAttribLdvEXT(UInt32 index, int pname, [Out] double* @params);
			[ThreadStatic]
			internal static glGetVertexAttribLdvEXT pglGetVertexAttribLdvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glHistogramEXT(int target, Int32 width, int internalformat, bool sink);
			[ThreadStatic]
			internal static glHistogramEXT pglHistogramEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glImportSyncEXT(int external_sync_type, IntPtr external_sync, uint flags);
			[ThreadStatic]
			internal static glImportSyncEXT pglImportSyncEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glIndexFuncEXT(int func, float @ref);
			[ThreadStatic]
			internal static glIndexFuncEXT pglIndexFuncEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glIndexMaterialEXT(int face, int mode);
			[ThreadStatic]
			internal static glIndexMaterialEXT pglIndexMaterialEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glIndexPointerEXT(int type, Int32 stride, Int32 count, IntPtr pointer);
			[ThreadStatic]
			internal static glIndexPointerEXT pglIndexPointerEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glInsertComponentEXT(UInt32 res, UInt32 src, UInt32 num);
			[ThreadStatic]
			internal static glInsertComponentEXT pglInsertComponentEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsEnabledIndexedEXT(int target, UInt32 index);
			[ThreadStatic]
			internal static glIsEnabledIndexedEXT pglIsEnabledIndexedEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsFramebufferEXT(UInt32 framebuffer);
			[ThreadStatic]
			internal static glIsFramebufferEXT pglIsFramebufferEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsRenderbufferEXT(UInt32 renderbuffer);
			[ThreadStatic]
			internal static glIsRenderbufferEXT pglIsRenderbufferEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsTextureEXT(UInt32 texture);
			[ThreadStatic]
			internal static glIsTextureEXT pglIsTextureEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsVariantEnabledEXT(UInt32 id, int cap);
			[ThreadStatic]
			internal static glIsVariantEnabledEXT pglIsVariantEnabledEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glLockArraysEXT(int first, Int32 count);
			[ThreadStatic]
			internal static glLockArraysEXT pglLockArraysEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate IntPtr glMapNamedBufferEXT(UInt32 buffer, int access);
			[ThreadStatic]
			internal static glMapNamedBufferEXT pglMapNamedBufferEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate IntPtr glMapNamedBufferRangeEXT(UInt32 buffer, IntPtr offset, UInt32 length, uint access);
			[ThreadStatic]
			internal static glMapNamedBufferRangeEXT pglMapNamedBufferRangeEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMatrixFrustumEXT(int mode, double left, double right, double bottom, double top, double zNear, double zFar);
			[ThreadStatic]
			internal static glMatrixFrustumEXT pglMatrixFrustumEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMatrixLoaddEXT(int mode, double* m);
			[ThreadStatic]
			internal static glMatrixLoaddEXT pglMatrixLoaddEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMatrixLoadfEXT(int mode, float* m);
			[ThreadStatic]
			internal static glMatrixLoadfEXT pglMatrixLoadfEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMatrixLoadIdentityEXT(int mode);
			[ThreadStatic]
			internal static glMatrixLoadIdentityEXT pglMatrixLoadIdentityEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMatrixLoadTransposedEXT(int mode, double* m);
			[ThreadStatic]
			internal static glMatrixLoadTransposedEXT pglMatrixLoadTransposedEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMatrixLoadTransposefEXT(int mode, float* m);
			[ThreadStatic]
			internal static glMatrixLoadTransposefEXT pglMatrixLoadTransposefEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMatrixMultdEXT(int mode, double* m);
			[ThreadStatic]
			internal static glMatrixMultdEXT pglMatrixMultdEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMatrixMultfEXT(int mode, float* m);
			[ThreadStatic]
			internal static glMatrixMultfEXT pglMatrixMultfEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMatrixMultTransposedEXT(int mode, double* m);
			[ThreadStatic]
			internal static glMatrixMultTransposedEXT pglMatrixMultTransposedEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMatrixMultTransposefEXT(int mode, float* m);
			[ThreadStatic]
			internal static glMatrixMultTransposefEXT pglMatrixMultTransposefEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMatrixOrthoEXT(int mode, double left, double right, double bottom, double top, double zNear, double zFar);
			[ThreadStatic]
			internal static glMatrixOrthoEXT pglMatrixOrthoEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMatrixPopEXT(int mode);
			[ThreadStatic]
			internal static glMatrixPopEXT pglMatrixPopEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMatrixPushEXT(int mode);
			[ThreadStatic]
			internal static glMatrixPushEXT pglMatrixPushEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMatrixRotatedEXT(int mode, double angle, double x, double y, double z);
			[ThreadStatic]
			internal static glMatrixRotatedEXT pglMatrixRotatedEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMatrixRotatefEXT(int mode, float angle, float x, float y, float z);
			[ThreadStatic]
			internal static glMatrixRotatefEXT pglMatrixRotatefEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMatrixScaledEXT(int mode, double x, double y, double z);
			[ThreadStatic]
			internal static glMatrixScaledEXT pglMatrixScaledEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMatrixScalefEXT(int mode, float x, float y, float z);
			[ThreadStatic]
			internal static glMatrixScalefEXT pglMatrixScalefEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMatrixTranslatedEXT(int mode, double x, double y, double z);
			[ThreadStatic]
			internal static glMatrixTranslatedEXT pglMatrixTranslatedEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMatrixTranslatefEXT(int mode, float x, float y, float z);
			[ThreadStatic]
			internal static glMatrixTranslatefEXT pglMatrixTranslatefEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMemoryBarrierEXT(uint barriers);
			[ThreadStatic]
			internal static glMemoryBarrierEXT pglMemoryBarrierEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMinmaxEXT(int target, int internalformat, bool sink);
			[ThreadStatic]
			internal static glMinmaxEXT pglMinmaxEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiDrawArraysEXT(int mode, int* first, Int32* count, Int32 primcount);
			[ThreadStatic]
			internal static glMultiDrawArraysEXT pglMultiDrawArraysEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiDrawElementsEXT(int mode, Int32* count, int type, IntPtr* indices, Int32 primcount);
			[ThreadStatic]
			internal static glMultiDrawElementsEXT pglMultiDrawElementsEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexBufferEXT(int texunit, int target, int internalformat, UInt32 buffer);
			[ThreadStatic]
			internal static glMultiTexBufferEXT pglMultiTexBufferEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoordPointerEXT(int texunit, int size, int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glMultiTexCoordPointerEXT pglMultiTexCoordPointerEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexEnvfEXT(int texunit, int target, int pname, float param);
			[ThreadStatic]
			internal static glMultiTexEnvfEXT pglMultiTexEnvfEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexEnvfvEXT(int texunit, int target, int pname, float* @params);
			[ThreadStatic]
			internal static glMultiTexEnvfvEXT pglMultiTexEnvfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexEnviEXT(int texunit, int target, int pname, int param);
			[ThreadStatic]
			internal static glMultiTexEnviEXT pglMultiTexEnviEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexEnvivEXT(int texunit, int target, int pname, int* @params);
			[ThreadStatic]
			internal static glMultiTexEnvivEXT pglMultiTexEnvivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexGendEXT(int texunit, int coord, int pname, double param);
			[ThreadStatic]
			internal static glMultiTexGendEXT pglMultiTexGendEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexGendvEXT(int texunit, int coord, int pname, double* @params);
			[ThreadStatic]
			internal static glMultiTexGendvEXT pglMultiTexGendvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexGenfEXT(int texunit, int coord, int pname, float param);
			[ThreadStatic]
			internal static glMultiTexGenfEXT pglMultiTexGenfEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexGenfvEXT(int texunit, int coord, int pname, float* @params);
			[ThreadStatic]
			internal static glMultiTexGenfvEXT pglMultiTexGenfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexGeniEXT(int texunit, int coord, int pname, int param);
			[ThreadStatic]
			internal static glMultiTexGeniEXT pglMultiTexGeniEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexGenivEXT(int texunit, int coord, int pname, int* @params);
			[ThreadStatic]
			internal static glMultiTexGenivEXT pglMultiTexGenivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexImage1DEXT(int texunit, int target, int level, int internalformat, Int32 width, int border, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glMultiTexImage1DEXT pglMultiTexImage1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexImage2DEXT(int texunit, int target, int level, int internalformat, Int32 width, Int32 height, int border, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glMultiTexImage2DEXT pglMultiTexImage2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexImage3DEXT(int texunit, int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glMultiTexImage3DEXT pglMultiTexImage3DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexParameterfEXT(int texunit, int target, int pname, float param);
			[ThreadStatic]
			internal static glMultiTexParameterfEXT pglMultiTexParameterfEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexParameterfvEXT(int texunit, int target, int pname, float* @params);
			[ThreadStatic]
			internal static glMultiTexParameterfvEXT pglMultiTexParameterfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexParameteriEXT(int texunit, int target, int pname, int param);
			[ThreadStatic]
			internal static glMultiTexParameteriEXT pglMultiTexParameteriEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexParameterIivEXT(int texunit, int target, int pname, int* @params);
			[ThreadStatic]
			internal static glMultiTexParameterIivEXT pglMultiTexParameterIivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexParameterIuivEXT(int texunit, int target, int pname, UInt32* @params);
			[ThreadStatic]
			internal static glMultiTexParameterIuivEXT pglMultiTexParameterIuivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexParameterivEXT(int texunit, int target, int pname, int* @params);
			[ThreadStatic]
			internal static glMultiTexParameterivEXT pglMultiTexParameterivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexRenderbufferEXT(int texunit, int target, UInt32 renderbuffer);
			[ThreadStatic]
			internal static glMultiTexRenderbufferEXT pglMultiTexRenderbufferEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexSubImage1DEXT(int texunit, int target, int level, int xoffset, Int32 width, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glMultiTexSubImage1DEXT pglMultiTexSubImage1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexSubImage2DEXT(int texunit, int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glMultiTexSubImage2DEXT pglMultiTexSubImage2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexSubImage3DEXT(int texunit, int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glMultiTexSubImage3DEXT pglMultiTexSubImage3DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedBufferDataEXT(UInt32 buffer, UInt32 size, IntPtr data, int usage);
			[ThreadStatic]
			internal static glNamedBufferDataEXT pglNamedBufferDataEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedBufferSubDataEXT(UInt32 buffer, IntPtr offset, UInt32 size, IntPtr data);
			[ThreadStatic]
			internal static glNamedBufferSubDataEXT pglNamedBufferSubDataEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedCopyBufferSubDataEXT(UInt32 readBuffer, UInt32 writeBuffer, IntPtr readOffset, IntPtr writeOffset, UInt32 size);
			[ThreadStatic]
			internal static glNamedCopyBufferSubDataEXT pglNamedCopyBufferSubDataEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedFramebufferRenderbufferEXT(UInt32 framebuffer, int attachment, int renderbuffertarget, UInt32 renderbuffer);
			[ThreadStatic]
			internal static glNamedFramebufferRenderbufferEXT pglNamedFramebufferRenderbufferEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedFramebufferTexture1DEXT(UInt32 framebuffer, int attachment, int textarget, UInt32 texture, int level);
			[ThreadStatic]
			internal static glNamedFramebufferTexture1DEXT pglNamedFramebufferTexture1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedFramebufferTexture2DEXT(UInt32 framebuffer, int attachment, int textarget, UInt32 texture, int level);
			[ThreadStatic]
			internal static glNamedFramebufferTexture2DEXT pglNamedFramebufferTexture2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedFramebufferTexture3DEXT(UInt32 framebuffer, int attachment, int textarget, UInt32 texture, int level, int zoffset);
			[ThreadStatic]
			internal static glNamedFramebufferTexture3DEXT pglNamedFramebufferTexture3DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedFramebufferTextureEXT(UInt32 framebuffer, int attachment, UInt32 texture, int level);
			[ThreadStatic]
			internal static glNamedFramebufferTextureEXT pglNamedFramebufferTextureEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedFramebufferTextureFaceEXT(UInt32 framebuffer, int attachment, UInt32 texture, int level, int face);
			[ThreadStatic]
			internal static glNamedFramebufferTextureFaceEXT pglNamedFramebufferTextureFaceEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedFramebufferTextureLayerEXT(UInt32 framebuffer, int attachment, UInt32 texture, int level, int layer);
			[ThreadStatic]
			internal static glNamedFramebufferTextureLayerEXT pglNamedFramebufferTextureLayerEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedProgramLocalParameter4dEXT(UInt32 program, int target, UInt32 index, double x, double y, double z, double w);
			[ThreadStatic]
			internal static glNamedProgramLocalParameter4dEXT pglNamedProgramLocalParameter4dEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glNamedProgramLocalParameter4dvEXT(UInt32 program, int target, UInt32 index, double* @params);
			[ThreadStatic]
			internal static glNamedProgramLocalParameter4dvEXT pglNamedProgramLocalParameter4dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedProgramLocalParameter4fEXT(UInt32 program, int target, UInt32 index, float x, float y, float z, float w);
			[ThreadStatic]
			internal static glNamedProgramLocalParameter4fEXT pglNamedProgramLocalParameter4fEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glNamedProgramLocalParameter4fvEXT(UInt32 program, int target, UInt32 index, float* @params);
			[ThreadStatic]
			internal static glNamedProgramLocalParameter4fvEXT pglNamedProgramLocalParameter4fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedProgramLocalParameterI4iEXT(UInt32 program, int target, UInt32 index, int x, int y, int z, int w);
			[ThreadStatic]
			internal static glNamedProgramLocalParameterI4iEXT pglNamedProgramLocalParameterI4iEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glNamedProgramLocalParameterI4ivEXT(UInt32 program, int target, UInt32 index, int* @params);
			[ThreadStatic]
			internal static glNamedProgramLocalParameterI4ivEXT pglNamedProgramLocalParameterI4ivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedProgramLocalParameterI4uiEXT(UInt32 program, int target, UInt32 index, UInt32 x, UInt32 y, UInt32 z, UInt32 w);
			[ThreadStatic]
			internal static glNamedProgramLocalParameterI4uiEXT pglNamedProgramLocalParameterI4uiEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glNamedProgramLocalParameterI4uivEXT(UInt32 program, int target, UInt32 index, UInt32* @params);
			[ThreadStatic]
			internal static glNamedProgramLocalParameterI4uivEXT pglNamedProgramLocalParameterI4uivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glNamedProgramLocalParameters4fvEXT(UInt32 program, int target, UInt32 index, Int32 count, float* @params);
			[ThreadStatic]
			internal static glNamedProgramLocalParameters4fvEXT pglNamedProgramLocalParameters4fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glNamedProgramLocalParametersI4ivEXT(UInt32 program, int target, UInt32 index, Int32 count, int* @params);
			[ThreadStatic]
			internal static glNamedProgramLocalParametersI4ivEXT pglNamedProgramLocalParametersI4ivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glNamedProgramLocalParametersI4uivEXT(UInt32 program, int target, UInt32 index, Int32 count, UInt32* @params);
			[ThreadStatic]
			internal static glNamedProgramLocalParametersI4uivEXT pglNamedProgramLocalParametersI4uivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedProgramStringEXT(UInt32 program, int target, int format, Int32 len, IntPtr @string);
			[ThreadStatic]
			internal static glNamedProgramStringEXT pglNamedProgramStringEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedRenderbufferStorageEXT(UInt32 renderbuffer, int internalformat, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glNamedRenderbufferStorageEXT pglNamedRenderbufferStorageEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedRenderbufferStorageMultisampleCoverageEXT(UInt32 renderbuffer, Int32 coverageSamples, Int32 colorSamples, int internalformat, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glNamedRenderbufferStorageMultisampleCoverageEXT pglNamedRenderbufferStorageMultisampleCoverageEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedRenderbufferStorageMultisampleEXT(UInt32 renderbuffer, Int32 samples, int internalformat, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glNamedRenderbufferStorageMultisampleEXT pglNamedRenderbufferStorageMultisampleEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNormalPointerEXT(int type, Int32 stride, Int32 count, IntPtr pointer);
			[ThreadStatic]
			internal static glNormalPointerEXT pglNormalPointerEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPixelTransformParameterfEXT(int target, int pname, float param);
			[ThreadStatic]
			internal static glPixelTransformParameterfEXT pglPixelTransformParameterfEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glPixelTransformParameterfvEXT(int target, int pname, float* @params);
			[ThreadStatic]
			internal static glPixelTransformParameterfvEXT pglPixelTransformParameterfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPixelTransformParameteriEXT(int target, int pname, int param);
			[ThreadStatic]
			internal static glPixelTransformParameteriEXT pglPixelTransformParameteriEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glPixelTransformParameterivEXT(int target, int pname, int* @params);
			[ThreadStatic]
			internal static glPixelTransformParameterivEXT pglPixelTransformParameterivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPointParameterfEXT(int pname, float param);
			[ThreadStatic]
			internal static glPointParameterfEXT pglPointParameterfEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glPointParameterfvEXT(int pname, float* @params);
			[ThreadStatic]
			internal static glPointParameterfvEXT pglPointParameterfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPolygonOffsetEXT(float factor, float bias);
			[ThreadStatic]
			internal static glPolygonOffsetEXT pglPolygonOffsetEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glPrioritizeTexturesEXT(Int32 n, UInt32* textures, float* priorities);
			[ThreadStatic]
			internal static glPrioritizeTexturesEXT pglPrioritizeTexturesEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramEnvParameters4fvEXT(int target, UInt32 index, Int32 count, float* @params);
			[ThreadStatic]
			internal static glProgramEnvParameters4fvEXT pglProgramEnvParameters4fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramLocalParameters4fvEXT(int target, UInt32 index, Int32 count, float* @params);
			[ThreadStatic]
			internal static glProgramLocalParameters4fvEXT pglProgramLocalParameters4fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramParameteriEXT(UInt32 program, int pname, int value);
			[ThreadStatic]
			internal static glProgramParameteriEXT pglProgramParameteriEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform1dEXT(UInt32 program, int location, double x);
			[ThreadStatic]
			internal static glProgramUniform1dEXT pglProgramUniform1dEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform1dvEXT(UInt32 program, int location, Int32 count, double* value);
			[ThreadStatic]
			internal static glProgramUniform1dvEXT pglProgramUniform1dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform1fEXT(UInt32 program, int location, float v0);
			[ThreadStatic]
			internal static glProgramUniform1fEXT pglProgramUniform1fEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform1fvEXT(UInt32 program, int location, Int32 count, float* value);
			[ThreadStatic]
			internal static glProgramUniform1fvEXT pglProgramUniform1fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform1iEXT(UInt32 program, int location, int v0);
			[ThreadStatic]
			internal static glProgramUniform1iEXT pglProgramUniform1iEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform1ivEXT(UInt32 program, int location, Int32 count, int* value);
			[ThreadStatic]
			internal static glProgramUniform1ivEXT pglProgramUniform1ivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform1uiEXT(UInt32 program, int location, UInt32 v0);
			[ThreadStatic]
			internal static glProgramUniform1uiEXT pglProgramUniform1uiEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform1uivEXT(UInt32 program, int location, Int32 count, UInt32* value);
			[ThreadStatic]
			internal static glProgramUniform1uivEXT pglProgramUniform1uivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform2dEXT(UInt32 program, int location, double x, double y);
			[ThreadStatic]
			internal static glProgramUniform2dEXT pglProgramUniform2dEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform2dvEXT(UInt32 program, int location, Int32 count, double* value);
			[ThreadStatic]
			internal static glProgramUniform2dvEXT pglProgramUniform2dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform2fEXT(UInt32 program, int location, float v0, float v1);
			[ThreadStatic]
			internal static glProgramUniform2fEXT pglProgramUniform2fEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform2fvEXT(UInt32 program, int location, Int32 count, float* value);
			[ThreadStatic]
			internal static glProgramUniform2fvEXT pglProgramUniform2fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform2iEXT(UInt32 program, int location, int v0, int v1);
			[ThreadStatic]
			internal static glProgramUniform2iEXT pglProgramUniform2iEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform2ivEXT(UInt32 program, int location, Int32 count, int* value);
			[ThreadStatic]
			internal static glProgramUniform2ivEXT pglProgramUniform2ivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform2uiEXT(UInt32 program, int location, UInt32 v0, UInt32 v1);
			[ThreadStatic]
			internal static glProgramUniform2uiEXT pglProgramUniform2uiEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform2uivEXT(UInt32 program, int location, Int32 count, UInt32* value);
			[ThreadStatic]
			internal static glProgramUniform2uivEXT pglProgramUniform2uivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform3dEXT(UInt32 program, int location, double x, double y, double z);
			[ThreadStatic]
			internal static glProgramUniform3dEXT pglProgramUniform3dEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform3dvEXT(UInt32 program, int location, Int32 count, double* value);
			[ThreadStatic]
			internal static glProgramUniform3dvEXT pglProgramUniform3dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform3fEXT(UInt32 program, int location, float v0, float v1, float v2);
			[ThreadStatic]
			internal static glProgramUniform3fEXT pglProgramUniform3fEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform3fvEXT(UInt32 program, int location, Int32 count, float* value);
			[ThreadStatic]
			internal static glProgramUniform3fvEXT pglProgramUniform3fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform3iEXT(UInt32 program, int location, int v0, int v1, int v2);
			[ThreadStatic]
			internal static glProgramUniform3iEXT pglProgramUniform3iEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform3ivEXT(UInt32 program, int location, Int32 count, int* value);
			[ThreadStatic]
			internal static glProgramUniform3ivEXT pglProgramUniform3ivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform3uiEXT(UInt32 program, int location, UInt32 v0, UInt32 v1, UInt32 v2);
			[ThreadStatic]
			internal static glProgramUniform3uiEXT pglProgramUniform3uiEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform3uivEXT(UInt32 program, int location, Int32 count, UInt32* value);
			[ThreadStatic]
			internal static glProgramUniform3uivEXT pglProgramUniform3uivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform4dEXT(UInt32 program, int location, double x, double y, double z, double w);
			[ThreadStatic]
			internal static glProgramUniform4dEXT pglProgramUniform4dEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform4dvEXT(UInt32 program, int location, Int32 count, double* value);
			[ThreadStatic]
			internal static glProgramUniform4dvEXT pglProgramUniform4dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform4fEXT(UInt32 program, int location, float v0, float v1, float v2, float v3);
			[ThreadStatic]
			internal static glProgramUniform4fEXT pglProgramUniform4fEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform4fvEXT(UInt32 program, int location, Int32 count, float* value);
			[ThreadStatic]
			internal static glProgramUniform4fvEXT pglProgramUniform4fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform4iEXT(UInt32 program, int location, int v0, int v1, int v2, int v3);
			[ThreadStatic]
			internal static glProgramUniform4iEXT pglProgramUniform4iEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform4ivEXT(UInt32 program, int location, Int32 count, int* value);
			[ThreadStatic]
			internal static glProgramUniform4ivEXT pglProgramUniform4ivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform4uiEXT(UInt32 program, int location, UInt32 v0, UInt32 v1, UInt32 v2, UInt32 v3);
			[ThreadStatic]
			internal static glProgramUniform4uiEXT pglProgramUniform4uiEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform4uivEXT(UInt32 program, int location, Int32 count, UInt32* value);
			[ThreadStatic]
			internal static glProgramUniform4uivEXT pglProgramUniform4uivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix2dvEXT(UInt32 program, int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix2dvEXT pglProgramUniformMatrix2dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix2fvEXT(UInt32 program, int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix2fvEXT pglProgramUniformMatrix2fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix2x3dvEXT(UInt32 program, int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix2x3dvEXT pglProgramUniformMatrix2x3dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix2x3fvEXT(UInt32 program, int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix2x3fvEXT pglProgramUniformMatrix2x3fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix2x4dvEXT(UInt32 program, int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix2x4dvEXT pglProgramUniformMatrix2x4dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix2x4fvEXT(UInt32 program, int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix2x4fvEXT pglProgramUniformMatrix2x4fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix3dvEXT(UInt32 program, int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix3dvEXT pglProgramUniformMatrix3dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix3fvEXT(UInt32 program, int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix3fvEXT pglProgramUniformMatrix3fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix3x2dvEXT(UInt32 program, int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix3x2dvEXT pglProgramUniformMatrix3x2dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix3x2fvEXT(UInt32 program, int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix3x2fvEXT pglProgramUniformMatrix3x2fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix3x4dvEXT(UInt32 program, int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix3x4dvEXT pglProgramUniformMatrix3x4dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix3x4fvEXT(UInt32 program, int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix3x4fvEXT pglProgramUniformMatrix3x4fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix4dvEXT(UInt32 program, int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix4dvEXT pglProgramUniformMatrix4dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix4fvEXT(UInt32 program, int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix4fvEXT pglProgramUniformMatrix4fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix4x2dvEXT(UInt32 program, int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix4x2dvEXT pglProgramUniformMatrix4x2dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix4x2fvEXT(UInt32 program, int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix4x2fvEXT pglProgramUniformMatrix4x2fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix4x3dvEXT(UInt32 program, int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix4x3dvEXT pglProgramUniformMatrix4x3dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix4x3fvEXT(UInt32 program, int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix4x3fvEXT pglProgramUniformMatrix4x3fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProvokingVertexEXT(int mode);
			[ThreadStatic]
			internal static glProvokingVertexEXT pglProvokingVertexEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPushClientAttribDefaultEXT(uint mask);
			[ThreadStatic]
			internal static glPushClientAttribDefaultEXT pglPushClientAttribDefaultEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRenderbufferStorageEXT(int target, int internalformat, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glRenderbufferStorageEXT pglRenderbufferStorageEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRenderbufferStorageMultisampleEXT(int target, Int32 samples, int internalformat, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glRenderbufferStorageMultisampleEXT pglRenderbufferStorageMultisampleEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glResetHistogramEXT(int target);
			[ThreadStatic]
			internal static glResetHistogramEXT pglResetHistogramEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glResetMinmaxEXT(int target);
			[ThreadStatic]
			internal static glResetMinmaxEXT pglResetMinmaxEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSampleMaskEXT(float value, bool invert);
			[ThreadStatic]
			internal static glSampleMaskEXT pglSampleMaskEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSamplePatternEXT(int pattern);
			[ThreadStatic]
			internal static glSamplePatternEXT pglSamplePatternEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColor3bEXT(sbyte red, sbyte green, sbyte blue);
			[ThreadStatic]
			internal static glSecondaryColor3bEXT pglSecondaryColor3bEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSecondaryColor3bvEXT(sbyte* v);
			[ThreadStatic]
			internal static glSecondaryColor3bvEXT pglSecondaryColor3bvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColor3dEXT(double red, double green, double blue);
			[ThreadStatic]
			internal static glSecondaryColor3dEXT pglSecondaryColor3dEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSecondaryColor3dvEXT(double* v);
			[ThreadStatic]
			internal static glSecondaryColor3dvEXT pglSecondaryColor3dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColor3fEXT(float red, float green, float blue);
			[ThreadStatic]
			internal static glSecondaryColor3fEXT pglSecondaryColor3fEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSecondaryColor3fvEXT(float* v);
			[ThreadStatic]
			internal static glSecondaryColor3fvEXT pglSecondaryColor3fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColor3iEXT(int red, int green, int blue);
			[ThreadStatic]
			internal static glSecondaryColor3iEXT pglSecondaryColor3iEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSecondaryColor3ivEXT(int* v);
			[ThreadStatic]
			internal static glSecondaryColor3ivEXT pglSecondaryColor3ivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColor3sEXT(Int16 red, Int16 green, Int16 blue);
			[ThreadStatic]
			internal static glSecondaryColor3sEXT pglSecondaryColor3sEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSecondaryColor3svEXT(Int16* v);
			[ThreadStatic]
			internal static glSecondaryColor3svEXT pglSecondaryColor3svEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColor3ubEXT(byte red, byte green, byte blue);
			[ThreadStatic]
			internal static glSecondaryColor3ubEXT pglSecondaryColor3ubEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSecondaryColor3ubvEXT(byte* v);
			[ThreadStatic]
			internal static glSecondaryColor3ubvEXT pglSecondaryColor3ubvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColor3uiEXT(UInt32 red, UInt32 green, UInt32 blue);
			[ThreadStatic]
			internal static glSecondaryColor3uiEXT pglSecondaryColor3uiEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSecondaryColor3uivEXT(UInt32* v);
			[ThreadStatic]
			internal static glSecondaryColor3uivEXT pglSecondaryColor3uivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColor3usEXT(UInt16 red, UInt16 green, UInt16 blue);
			[ThreadStatic]
			internal static glSecondaryColor3usEXT pglSecondaryColor3usEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSecondaryColor3usvEXT(UInt16* v);
			[ThreadStatic]
			internal static glSecondaryColor3usvEXT pglSecondaryColor3usvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColorPointerEXT(int size, int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glSecondaryColorPointerEXT pglSecondaryColorPointerEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSeparableFilter2DEXT(int target, int internalformat, Int32 width, Int32 height, int format, int type, IntPtr row, IntPtr column);
			[ThreadStatic]
			internal static glSeparableFilter2DEXT pglSeparableFilter2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSetInvariantEXT(UInt32 id, int type, IntPtr addr);
			[ThreadStatic]
			internal static glSetInvariantEXT pglSetInvariantEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSetLocalConstantEXT(UInt32 id, int type, IntPtr addr);
			[ThreadStatic]
			internal static glSetLocalConstantEXT pglSetLocalConstantEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glShaderOp1EXT(int op, UInt32 res, UInt32 arg1);
			[ThreadStatic]
			internal static glShaderOp1EXT pglShaderOp1EXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glShaderOp2EXT(int op, UInt32 res, UInt32 arg1, UInt32 arg2);
			[ThreadStatic]
			internal static glShaderOp2EXT pglShaderOp2EXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glShaderOp3EXT(int op, UInt32 res, UInt32 arg1, UInt32 arg2, UInt32 arg3);
			[ThreadStatic]
			internal static glShaderOp3EXT pglShaderOp3EXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glStencilClearTagEXT(Int32 stencilTagBits, UInt32 stencilClearTag);
			[ThreadStatic]
			internal static glStencilClearTagEXT pglStencilClearTagEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSwizzleEXT(UInt32 res, UInt32 @in, int outX, int outY, int outZ, int outW);
			[ThreadStatic]
			internal static glSwizzleEXT pglSwizzleEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTangent3bEXT(sbyte tx, sbyte ty, sbyte tz);
			[ThreadStatic]
			internal static glTangent3bEXT pglTangent3bEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTangent3bvEXT(sbyte* v);
			[ThreadStatic]
			internal static glTangent3bvEXT pglTangent3bvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTangent3dEXT(double tx, double ty, double tz);
			[ThreadStatic]
			internal static glTangent3dEXT pglTangent3dEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTangent3dvEXT(double* v);
			[ThreadStatic]
			internal static glTangent3dvEXT pglTangent3dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTangent3fEXT(float tx, float ty, float tz);
			[ThreadStatic]
			internal static glTangent3fEXT pglTangent3fEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTangent3fvEXT(float* v);
			[ThreadStatic]
			internal static glTangent3fvEXT pglTangent3fvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTangent3iEXT(int tx, int ty, int tz);
			[ThreadStatic]
			internal static glTangent3iEXT pglTangent3iEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTangent3ivEXT(int* v);
			[ThreadStatic]
			internal static glTangent3ivEXT pglTangent3ivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTangent3sEXT(Int16 tx, Int16 ty, Int16 tz);
			[ThreadStatic]
			internal static glTangent3sEXT pglTangent3sEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTangent3svEXT(Int16* v);
			[ThreadStatic]
			internal static glTangent3svEXT pglTangent3svEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTangentPointerEXT(int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glTangentPointerEXT pglTangentPointerEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexBufferEXT(int target, int internalformat, UInt32 buffer);
			[ThreadStatic]
			internal static glTexBufferEXT pglTexBufferEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoordPointerEXT(int size, int type, Int32 stride, Int32 count, IntPtr pointer);
			[ThreadStatic]
			internal static glTexCoordPointerEXT pglTexCoordPointerEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexImage3DEXT(int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glTexImage3DEXT pglTexImage3DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexParameterIivEXT(int target, int pname, int* @params);
			[ThreadStatic]
			internal static glTexParameterIivEXT pglTexParameterIivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexParameterIuivEXT(int target, int pname, UInt32* @params);
			[ThreadStatic]
			internal static glTexParameterIuivEXT pglTexParameterIuivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexSubImage1DEXT(int target, int level, int xoffset, Int32 width, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glTexSubImage1DEXT pglTexSubImage1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexSubImage2DEXT(int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glTexSubImage2DEXT pglTexSubImage2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexSubImage3DEXT(int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glTexSubImage3DEXT pglTexSubImage3DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTextureBufferEXT(UInt32 texture, int target, int internalformat, UInt32 buffer);
			[ThreadStatic]
			internal static glTextureBufferEXT pglTextureBufferEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTextureImage1DEXT(UInt32 texture, int target, int level, int internalformat, Int32 width, int border, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glTextureImage1DEXT pglTextureImage1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTextureImage2DEXT(UInt32 texture, int target, int level, int internalformat, Int32 width, Int32 height, int border, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glTextureImage2DEXT pglTextureImage2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTextureImage3DEXT(UInt32 texture, int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glTextureImage3DEXT pglTextureImage3DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTextureLightEXT(int pname);
			[ThreadStatic]
			internal static glTextureLightEXT pglTextureLightEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTextureMaterialEXT(int face, int mode);
			[ThreadStatic]
			internal static glTextureMaterialEXT pglTextureMaterialEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTextureNormalEXT(int mode);
			[ThreadStatic]
			internal static glTextureNormalEXT pglTextureNormalEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTextureParameterfEXT(UInt32 texture, int target, int pname, float param);
			[ThreadStatic]
			internal static glTextureParameterfEXT pglTextureParameterfEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTextureParameterfvEXT(UInt32 texture, int target, int pname, float* @params);
			[ThreadStatic]
			internal static glTextureParameterfvEXT pglTextureParameterfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTextureParameteriEXT(UInt32 texture, int target, int pname, int param);
			[ThreadStatic]
			internal static glTextureParameteriEXT pglTextureParameteriEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTextureParameterIivEXT(UInt32 texture, int target, int pname, int* @params);
			[ThreadStatic]
			internal static glTextureParameterIivEXT pglTextureParameterIivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTextureParameterIuivEXT(UInt32 texture, int target, int pname, UInt32* @params);
			[ThreadStatic]
			internal static glTextureParameterIuivEXT pglTextureParameterIuivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTextureParameterivEXT(UInt32 texture, int target, int pname, int* @params);
			[ThreadStatic]
			internal static glTextureParameterivEXT pglTextureParameterivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTextureRenderbufferEXT(UInt32 texture, int target, UInt32 renderbuffer);
			[ThreadStatic]
			internal static glTextureRenderbufferEXT pglTextureRenderbufferEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTextureStorage1DEXT(UInt32 texture, int target, Int32 levels, int internalformat, Int32 width);
			[ThreadStatic]
			internal static glTextureStorage1DEXT pglTextureStorage1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTextureStorage2DEXT(UInt32 texture, int target, Int32 levels, int internalformat, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glTextureStorage2DEXT pglTextureStorage2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTextureStorage3DEXT(UInt32 texture, int target, Int32 levels, int internalformat, Int32 width, Int32 height, Int32 depth);
			[ThreadStatic]
			internal static glTextureStorage3DEXT pglTextureStorage3DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTextureSubImage1DEXT(UInt32 texture, int target, int level, int xoffset, Int32 width, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glTextureSubImage1DEXT pglTextureSubImage1DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTextureSubImage2DEXT(UInt32 texture, int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glTextureSubImage2DEXT pglTextureSubImage2DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTextureSubImage3DEXT(UInt32 texture, int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glTextureSubImage3DEXT pglTextureSubImage3DEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTransformFeedbackVaryingsEXT(UInt32 program, Int32 count, string[] varyings, int bufferMode);
			[ThreadStatic]
			internal static glTransformFeedbackVaryingsEXT pglTransformFeedbackVaryingsEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform1uiEXT(int location, UInt32 v0);
			[ThreadStatic]
			internal static glUniform1uiEXT pglUniform1uiEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform1uivEXT(int location, Int32 count, UInt32* value);
			[ThreadStatic]
			internal static glUniform1uivEXT pglUniform1uivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform2uiEXT(int location, UInt32 v0, UInt32 v1);
			[ThreadStatic]
			internal static glUniform2uiEXT pglUniform2uiEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform2uivEXT(int location, Int32 count, UInt32* value);
			[ThreadStatic]
			internal static glUniform2uivEXT pglUniform2uivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform3uiEXT(int location, UInt32 v0, UInt32 v1, UInt32 v2);
			[ThreadStatic]
			internal static glUniform3uiEXT pglUniform3uiEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform3uivEXT(int location, Int32 count, UInt32* value);
			[ThreadStatic]
			internal static glUniform3uivEXT pglUniform3uivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform4uiEXT(int location, UInt32 v0, UInt32 v1, UInt32 v2, UInt32 v3);
			[ThreadStatic]
			internal static glUniform4uiEXT pglUniform4uiEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform4uivEXT(int location, Int32 count, UInt32* value);
			[ThreadStatic]
			internal static glUniform4uivEXT pglUniform4uivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniformBufferEXT(UInt32 program, int location, UInt32 buffer);
			[ThreadStatic]
			internal static glUniformBufferEXT pglUniformBufferEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUnlockArraysEXT();
			[ThreadStatic]
			internal static glUnlockArraysEXT pglUnlockArraysEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glUnmapNamedBufferEXT(UInt32 buffer);
			[ThreadStatic]
			internal static glUnmapNamedBufferEXT pglUnmapNamedBufferEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUseShaderProgramEXT(int type, UInt32 program);
			[ThreadStatic]
			internal static glUseShaderProgramEXT pglUseShaderProgramEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVariantbvEXT(UInt32 id, sbyte* addr);
			[ThreadStatic]
			internal static glVariantbvEXT pglVariantbvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVariantdvEXT(UInt32 id, double* addr);
			[ThreadStatic]
			internal static glVariantdvEXT pglVariantdvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVariantfvEXT(UInt32 id, float* addr);
			[ThreadStatic]
			internal static glVariantfvEXT pglVariantfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVariantivEXT(UInt32 id, int* addr);
			[ThreadStatic]
			internal static glVariantivEXT pglVariantivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVariantPointerEXT(UInt32 id, int type, UInt32 stride, IntPtr addr);
			[ThreadStatic]
			internal static glVariantPointerEXT pglVariantPointerEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVariantsvEXT(UInt32 id, Int16* addr);
			[ThreadStatic]
			internal static glVariantsvEXT pglVariantsvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVariantubvEXT(UInt32 id, byte* addr);
			[ThreadStatic]
			internal static glVariantubvEXT pglVariantubvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVariantuivEXT(UInt32 id, UInt32* addr);
			[ThreadStatic]
			internal static glVariantuivEXT pglVariantuivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVariantusvEXT(UInt32 id, UInt16* addr);
			[ThreadStatic]
			internal static glVariantusvEXT pglVariantusvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexArrayVertexAttribLOffsetEXT(UInt32 vaobj, UInt32 buffer, UInt32 index, int size, int type, Int32 stride, IntPtr offset);
			[ThreadStatic]
			internal static glVertexArrayVertexAttribLOffsetEXT pglVertexArrayVertexAttribLOffsetEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribI1iEXT(UInt32 index, int x);
			[ThreadStatic]
			internal static glVertexAttribI1iEXT pglVertexAttribI1iEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI1ivEXT(UInt32 index, int* v);
			[ThreadStatic]
			internal static glVertexAttribI1ivEXT pglVertexAttribI1ivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribI1uiEXT(UInt32 index, UInt32 x);
			[ThreadStatic]
			internal static glVertexAttribI1uiEXT pglVertexAttribI1uiEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI1uivEXT(UInt32 index, UInt32* v);
			[ThreadStatic]
			internal static glVertexAttribI1uivEXT pglVertexAttribI1uivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribI2iEXT(UInt32 index, int x, int y);
			[ThreadStatic]
			internal static glVertexAttribI2iEXT pglVertexAttribI2iEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI2ivEXT(UInt32 index, int* v);
			[ThreadStatic]
			internal static glVertexAttribI2ivEXT pglVertexAttribI2ivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribI2uiEXT(UInt32 index, UInt32 x, UInt32 y);
			[ThreadStatic]
			internal static glVertexAttribI2uiEXT pglVertexAttribI2uiEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI2uivEXT(UInt32 index, UInt32* v);
			[ThreadStatic]
			internal static glVertexAttribI2uivEXT pglVertexAttribI2uivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribI3iEXT(UInt32 index, int x, int y, int z);
			[ThreadStatic]
			internal static glVertexAttribI3iEXT pglVertexAttribI3iEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI3ivEXT(UInt32 index, int* v);
			[ThreadStatic]
			internal static glVertexAttribI3ivEXT pglVertexAttribI3ivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribI3uiEXT(UInt32 index, UInt32 x, UInt32 y, UInt32 z);
			[ThreadStatic]
			internal static glVertexAttribI3uiEXT pglVertexAttribI3uiEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI3uivEXT(UInt32 index, UInt32* v);
			[ThreadStatic]
			internal static glVertexAttribI3uivEXT pglVertexAttribI3uivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI4bvEXT(UInt32 index, sbyte* v);
			[ThreadStatic]
			internal static glVertexAttribI4bvEXT pglVertexAttribI4bvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribI4iEXT(UInt32 index, int x, int y, int z, int w);
			[ThreadStatic]
			internal static glVertexAttribI4iEXT pglVertexAttribI4iEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI4ivEXT(UInt32 index, int* v);
			[ThreadStatic]
			internal static glVertexAttribI4ivEXT pglVertexAttribI4ivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI4svEXT(UInt32 index, Int16* v);
			[ThreadStatic]
			internal static glVertexAttribI4svEXT pglVertexAttribI4svEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI4ubvEXT(UInt32 index, byte* v);
			[ThreadStatic]
			internal static glVertexAttribI4ubvEXT pglVertexAttribI4ubvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribI4uiEXT(UInt32 index, UInt32 x, UInt32 y, UInt32 z, UInt32 w);
			[ThreadStatic]
			internal static glVertexAttribI4uiEXT pglVertexAttribI4uiEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI4uivEXT(UInt32 index, UInt32* v);
			[ThreadStatic]
			internal static glVertexAttribI4uivEXT pglVertexAttribI4uivEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI4usvEXT(UInt32 index, UInt16* v);
			[ThreadStatic]
			internal static glVertexAttribI4usvEXT pglVertexAttribI4usvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribIPointerEXT(UInt32 index, int size, int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glVertexAttribIPointerEXT pglVertexAttribIPointerEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribL1dEXT(UInt32 index, double x);
			[ThreadStatic]
			internal static glVertexAttribL1dEXT pglVertexAttribL1dEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribL1dvEXT(UInt32 index, double* v);
			[ThreadStatic]
			internal static glVertexAttribL1dvEXT pglVertexAttribL1dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribL2dEXT(UInt32 index, double x, double y);
			[ThreadStatic]
			internal static glVertexAttribL2dEXT pglVertexAttribL2dEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribL2dvEXT(UInt32 index, double* v);
			[ThreadStatic]
			internal static glVertexAttribL2dvEXT pglVertexAttribL2dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribL3dEXT(UInt32 index, double x, double y, double z);
			[ThreadStatic]
			internal static glVertexAttribL3dEXT pglVertexAttribL3dEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribL3dvEXT(UInt32 index, double* v);
			[ThreadStatic]
			internal static glVertexAttribL3dvEXT pglVertexAttribL3dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribL4dEXT(UInt32 index, double x, double y, double z, double w);
			[ThreadStatic]
			internal static glVertexAttribL4dEXT pglVertexAttribL4dEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribL4dvEXT(UInt32 index, double* v);
			[ThreadStatic]
			internal static glVertexAttribL4dvEXT pglVertexAttribL4dvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribLPointerEXT(UInt32 index, int size, int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glVertexAttribLPointerEXT pglVertexAttribLPointerEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexPointerEXT(int size, int type, Int32 stride, Int32 count, IntPtr pointer);
			[ThreadStatic]
			internal static glVertexPointerEXT pglVertexPointerEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexWeightfEXT(float weight);
			[ThreadStatic]
			internal static glVertexWeightfEXT pglVertexWeightfEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexWeightfvEXT(float* weight);
			[ThreadStatic]
			internal static glVertexWeightfvEXT pglVertexWeightfvEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexWeightPointerEXT(Int32 size, int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glVertexWeightPointerEXT pglVertexWeightPointerEXT = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWriteMaskEXT(UInt32 res, UInt32 @in, int outX, int outY, int outZ, int outW);
			[ThreadStatic]
			internal static glWriteMaskEXT pglWriteMaskEXT = null;

		}

		internal static partial class Imports
		{
			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glActiveProgramEXT", ExactSpelling = true)]
			internal extern static void glActiveProgramEXT(UInt32 program);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glActiveStencilFaceEXT", ExactSpelling = true)]
			internal extern static void glActiveStencilFaceEXT(int face);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glApplyTextureEXT", ExactSpelling = true)]
			internal extern static void glApplyTextureEXT(int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glAreTexturesResidentEXT", ExactSpelling = true)]
			internal extern static unsafe bool glAreTexturesResidentEXT(Int32 n, UInt32* textures, [Out]bool* residences);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glArrayElementEXT", ExactSpelling = true)]
			internal extern static void glArrayElementEXT(int i);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBeginTransformFeedbackEXT", ExactSpelling = true)]
			internal extern static void glBeginTransformFeedbackEXT(int primitiveMode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBeginVertexShaderEXT", ExactSpelling = true)]
			internal extern static void glBeginVertexShaderEXT();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindBufferBaseEXT", ExactSpelling = true)]
			internal extern static void glBindBufferBaseEXT(int target, UInt32 index, UInt32 buffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindBufferOffsetEXT", ExactSpelling = true)]
			internal extern static void glBindBufferOffsetEXT(int target, UInt32 index, UInt32 buffer, IntPtr offset);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindBufferRangeEXT", ExactSpelling = true)]
			internal extern static void glBindBufferRangeEXT(int target, UInt32 index, UInt32 buffer, IntPtr offset, UInt32 size);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindFragDataLocationEXT", ExactSpelling = true)]
			internal extern static void glBindFragDataLocationEXT(UInt32 program, UInt32 color, string name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindFramebufferEXT", ExactSpelling = true)]
			internal extern static void glBindFramebufferEXT(int target, UInt32 framebuffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindImageTextureEXT", ExactSpelling = true)]
			internal extern static void glBindImageTextureEXT(UInt32 index, UInt32 texture, int level, bool layered, int layer, int access, int format);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindLightParameterEXT", ExactSpelling = true)]
			internal extern static UInt32 glBindLightParameterEXT(int light, int value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindMaterialParameterEXT", ExactSpelling = true)]
			internal extern static UInt32 glBindMaterialParameterEXT(int face, int value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindMultiTextureEXT", ExactSpelling = true)]
			internal extern static void glBindMultiTextureEXT(int texunit, int target, UInt32 texture);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindParameterEXT", ExactSpelling = true)]
			internal extern static UInt32 glBindParameterEXT(int value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindRenderbufferEXT", ExactSpelling = true)]
			internal extern static void glBindRenderbufferEXT(int target, UInt32 renderbuffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindTexGenParameterEXT", ExactSpelling = true)]
			internal extern static UInt32 glBindTexGenParameterEXT(int unit, int coord, int value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindTextureEXT", ExactSpelling = true)]
			internal extern static void glBindTextureEXT(int target, UInt32 texture);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindTextureUnitParameterEXT", ExactSpelling = true)]
			internal extern static UInt32 glBindTextureUnitParameterEXT(int unit, int value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindVertexShaderEXT", ExactSpelling = true)]
			internal extern static void glBindVertexShaderEXT(UInt32 id);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBinormal3bEXT", ExactSpelling = true)]
			internal extern static void glBinormal3bEXT(sbyte bx, sbyte by, sbyte bz);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBinormal3bvEXT", ExactSpelling = true)]
			internal extern static unsafe void glBinormal3bvEXT(sbyte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBinormal3dEXT", ExactSpelling = true)]
			internal extern static void glBinormal3dEXT(double bx, double by, double bz);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBinormal3dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glBinormal3dvEXT(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBinormal3fEXT", ExactSpelling = true)]
			internal extern static void glBinormal3fEXT(float bx, float by, float bz);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBinormal3fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glBinormal3fvEXT(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBinormal3iEXT", ExactSpelling = true)]
			internal extern static void glBinormal3iEXT(int bx, int by, int bz);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBinormal3ivEXT", ExactSpelling = true)]
			internal extern static unsafe void glBinormal3ivEXT(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBinormal3sEXT", ExactSpelling = true)]
			internal extern static void glBinormal3sEXT(Int16 bx, Int16 by, Int16 bz);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBinormal3svEXT", ExactSpelling = true)]
			internal extern static unsafe void glBinormal3svEXT(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBinormalPointerEXT", ExactSpelling = true)]
			internal extern static void glBinormalPointerEXT(int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlendColorEXT", ExactSpelling = true)]
			internal extern static void glBlendColorEXT(float red, float green, float blue, float alpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlendEquationEXT", ExactSpelling = true)]
			internal extern static void glBlendEquationEXT(int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlendEquationSeparateEXT", ExactSpelling = true)]
			internal extern static void glBlendEquationSeparateEXT(int modeRGB, int modeAlpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlendFuncSeparateEXT", ExactSpelling = true)]
			internal extern static void glBlendFuncSeparateEXT(int sfactorRGB, int dfactorRGB, int sfactorAlpha, int dfactorAlpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlitFramebufferEXT", ExactSpelling = true)]
			internal extern static void glBlitFramebufferEXT(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, int filter);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCheckFramebufferStatusEXT", ExactSpelling = true)]
			internal extern static int glCheckFramebufferStatusEXT(int target);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCheckNamedFramebufferStatusEXT", ExactSpelling = true)]
			internal extern static int glCheckNamedFramebufferStatusEXT(UInt32 framebuffer, int target);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClearColorIiEXT", ExactSpelling = true)]
			internal extern static void glClearColorIiEXT(int red, int green, int blue, int alpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClearColorIuiEXT", ExactSpelling = true)]
			internal extern static void glClearColorIuiEXT(UInt32 red, UInt32 green, UInt32 blue, UInt32 alpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClientAttribDefaultEXT", ExactSpelling = true)]
			internal extern static void glClientAttribDefaultEXT(uint mask);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColorMaskIndexedEXT", ExactSpelling = true)]
			internal extern static void glColorMaskIndexedEXT(UInt32 index, bool r, bool g, bool b, bool a);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColorPointerEXT", ExactSpelling = true)]
			internal extern static void glColorPointerEXT(int size, int type, Int32 stride, Int32 count, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColorSubTableEXT", ExactSpelling = true)]
			internal extern static void glColorSubTableEXT(int target, Int32 start, Int32 count, int format, int type, IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColorTableEXT", ExactSpelling = true)]
			internal extern static void glColorTableEXT(int target, int internalFormat, Int32 width, int format, int type, IntPtr table);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedMultiTexImage1DEXT", ExactSpelling = true)]
			internal extern static void glCompressedMultiTexImage1DEXT(int texunit, int target, int level, int internalformat, Int32 width, int border, Int32 imageSize, IntPtr bits);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedMultiTexImage2DEXT", ExactSpelling = true)]
			internal extern static void glCompressedMultiTexImage2DEXT(int texunit, int target, int level, int internalformat, Int32 width, Int32 height, int border, Int32 imageSize, IntPtr bits);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedMultiTexImage3DEXT", ExactSpelling = true)]
			internal extern static void glCompressedMultiTexImage3DEXT(int texunit, int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, Int32 imageSize, IntPtr bits);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedMultiTexSubImage1DEXT", ExactSpelling = true)]
			internal extern static void glCompressedMultiTexSubImage1DEXT(int texunit, int target, int level, int xoffset, Int32 width, int format, Int32 imageSize, IntPtr bits);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedMultiTexSubImage2DEXT", ExactSpelling = true)]
			internal extern static void glCompressedMultiTexSubImage2DEXT(int texunit, int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, Int32 imageSize, IntPtr bits);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedMultiTexSubImage3DEXT", ExactSpelling = true)]
			internal extern static void glCompressedMultiTexSubImage3DEXT(int texunit, int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, Int32 imageSize, IntPtr bits);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedTextureImage1DEXT", ExactSpelling = true)]
			internal extern static void glCompressedTextureImage1DEXT(UInt32 texture, int target, int level, int internalformat, Int32 width, int border, Int32 imageSize, IntPtr bits);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedTextureImage2DEXT", ExactSpelling = true)]
			internal extern static void glCompressedTextureImage2DEXT(UInt32 texture, int target, int level, int internalformat, Int32 width, Int32 height, int border, Int32 imageSize, IntPtr bits);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedTextureImage3DEXT", ExactSpelling = true)]
			internal extern static void glCompressedTextureImage3DEXT(UInt32 texture, int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, Int32 imageSize, IntPtr bits);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedTextureSubImage1DEXT", ExactSpelling = true)]
			internal extern static void glCompressedTextureSubImage1DEXT(UInt32 texture, int target, int level, int xoffset, Int32 width, int format, Int32 imageSize, IntPtr bits);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedTextureSubImage2DEXT", ExactSpelling = true)]
			internal extern static void glCompressedTextureSubImage2DEXT(UInt32 texture, int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, Int32 imageSize, IntPtr bits);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedTextureSubImage3DEXT", ExactSpelling = true)]
			internal extern static void glCompressedTextureSubImage3DEXT(UInt32 texture, int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, Int32 imageSize, IntPtr bits);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glConvolutionFilter1DEXT", ExactSpelling = true)]
			internal extern static void glConvolutionFilter1DEXT(int target, int internalformat, Int32 width, int format, int type, IntPtr image);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glConvolutionFilter2DEXT", ExactSpelling = true)]
			internal extern static void glConvolutionFilter2DEXT(int target, int internalformat, Int32 width, Int32 height, int format, int type, IntPtr image);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glConvolutionParameterfEXT", ExactSpelling = true)]
			internal extern static void glConvolutionParameterfEXT(int target, int pname, float @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glConvolutionParameterfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glConvolutionParameterfvEXT(int target, int pname, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glConvolutionParameteriEXT", ExactSpelling = true)]
			internal extern static void glConvolutionParameteriEXT(int target, int pname, int @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glConvolutionParameterivEXT", ExactSpelling = true)]
			internal extern static unsafe void glConvolutionParameterivEXT(int target, int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyColorSubTableEXT", ExactSpelling = true)]
			internal extern static void glCopyColorSubTableEXT(int target, Int32 start, int x, int y, Int32 width);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyConvolutionFilter1DEXT", ExactSpelling = true)]
			internal extern static void glCopyConvolutionFilter1DEXT(int target, int internalformat, int x, int y, Int32 width);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyConvolutionFilter2DEXT", ExactSpelling = true)]
			internal extern static void glCopyConvolutionFilter2DEXT(int target, int internalformat, int x, int y, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyMultiTexImage1DEXT", ExactSpelling = true)]
			internal extern static void glCopyMultiTexImage1DEXT(int texunit, int target, int level, int internalformat, int x, int y, Int32 width, int border);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyMultiTexImage2DEXT", ExactSpelling = true)]
			internal extern static void glCopyMultiTexImage2DEXT(int texunit, int target, int level, int internalformat, int x, int y, Int32 width, Int32 height, int border);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyMultiTexSubImage1DEXT", ExactSpelling = true)]
			internal extern static void glCopyMultiTexSubImage1DEXT(int texunit, int target, int level, int xoffset, int x, int y, Int32 width);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyMultiTexSubImage2DEXT", ExactSpelling = true)]
			internal extern static void glCopyMultiTexSubImage2DEXT(int texunit, int target, int level, int xoffset, int yoffset, int x, int y, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyMultiTexSubImage3DEXT", ExactSpelling = true)]
			internal extern static void glCopyMultiTexSubImage3DEXT(int texunit, int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyTexImage1DEXT", ExactSpelling = true)]
			internal extern static void glCopyTexImage1DEXT(int target, int level, int internalformat, int x, int y, Int32 width, int border);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyTexImage2DEXT", ExactSpelling = true)]
			internal extern static void glCopyTexImage2DEXT(int target, int level, int internalformat, int x, int y, Int32 width, Int32 height, int border);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyTexSubImage1DEXT", ExactSpelling = true)]
			internal extern static void glCopyTexSubImage1DEXT(int target, int level, int xoffset, int x, int y, Int32 width);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyTexSubImage2DEXT", ExactSpelling = true)]
			internal extern static void glCopyTexSubImage2DEXT(int target, int level, int xoffset, int yoffset, int x, int y, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyTexSubImage3DEXT", ExactSpelling = true)]
			internal extern static void glCopyTexSubImage3DEXT(int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyTextureImage1DEXT", ExactSpelling = true)]
			internal extern static void glCopyTextureImage1DEXT(UInt32 texture, int target, int level, int internalformat, int x, int y, Int32 width, int border);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyTextureImage2DEXT", ExactSpelling = true)]
			internal extern static void glCopyTextureImage2DEXT(UInt32 texture, int target, int level, int internalformat, int x, int y, Int32 width, Int32 height, int border);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyTextureSubImage1DEXT", ExactSpelling = true)]
			internal extern static void glCopyTextureSubImage1DEXT(UInt32 texture, int target, int level, int xoffset, int x, int y, Int32 width);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyTextureSubImage2DEXT", ExactSpelling = true)]
			internal extern static void glCopyTextureSubImage2DEXT(UInt32 texture, int target, int level, int xoffset, int yoffset, int x, int y, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyTextureSubImage3DEXT", ExactSpelling = true)]
			internal extern static void glCopyTextureSubImage3DEXT(UInt32 texture, int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCreateShaderProgramEXT", ExactSpelling = true)]
			internal extern static UInt32 glCreateShaderProgramEXT(int type, string @string);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCullParameterdvEXT", ExactSpelling = true)]
			internal extern static unsafe void glCullParameterdvEXT(int pname, [Out]double* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCullParameterfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glCullParameterfvEXT(int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteFramebuffersEXT", ExactSpelling = true)]
			internal extern static unsafe void glDeleteFramebuffersEXT(Int32 n, UInt32* framebuffers);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteRenderbuffersEXT", ExactSpelling = true)]
			internal extern static unsafe void glDeleteRenderbuffersEXT(Int32 n, UInt32* renderbuffers);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteTexturesEXT", ExactSpelling = true)]
			internal extern static unsafe void glDeleteTexturesEXT(Int32 n, UInt32* textures);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteVertexShaderEXT", ExactSpelling = true)]
			internal extern static void glDeleteVertexShaderEXT(UInt32 id);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDepthBoundsEXT", ExactSpelling = true)]
			internal extern static void glDepthBoundsEXT(double zmin, double zmax);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDisableClientStateIndexedEXT", ExactSpelling = true)]
			internal extern static void glDisableClientStateIndexedEXT(int array, UInt32 index);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDisableIndexedEXT", ExactSpelling = true)]
			internal extern static void glDisableIndexedEXT(int target, UInt32 index);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDisableVariantClientStateEXT", ExactSpelling = true)]
			internal extern static void glDisableVariantClientStateEXT(UInt32 id);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawArraysEXT", ExactSpelling = true)]
			internal extern static void glDrawArraysEXT(int mode, int first, Int32 count);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawArraysInstancedEXT", ExactSpelling = true)]
			internal extern static void glDrawArraysInstancedEXT(int mode, int start, Int32 count, Int32 primcount);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawElementsInstancedEXT", ExactSpelling = true)]
			internal extern static void glDrawElementsInstancedEXT(int mode, Int32 count, int type, IntPtr indices, Int32 primcount);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawRangeElementsEXT", ExactSpelling = true)]
			internal extern static void glDrawRangeElementsEXT(int mode, UInt32 start, UInt32 end, Int32 count, int type, IntPtr indices);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEdgeFlagPointerEXT", ExactSpelling = true)]
			internal extern static unsafe void glEdgeFlagPointerEXT(Int32 stride, Int32 count, bool* pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEnableClientStateIndexedEXT", ExactSpelling = true)]
			internal extern static void glEnableClientStateIndexedEXT(int array, UInt32 index);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEnableIndexedEXT", ExactSpelling = true)]
			internal extern static void glEnableIndexedEXT(int target, UInt32 index);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEnableVariantClientStateEXT", ExactSpelling = true)]
			internal extern static void glEnableVariantClientStateEXT(UInt32 id);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEndTransformFeedbackEXT", ExactSpelling = true)]
			internal extern static void glEndTransformFeedbackEXT();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEndVertexShaderEXT", ExactSpelling = true)]
			internal extern static void glEndVertexShaderEXT();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glExtractComponentEXT", ExactSpelling = true)]
			internal extern static void glExtractComponentEXT(UInt32 res, UInt32 src, UInt32 num);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFlushMappedNamedBufferRangeEXT", ExactSpelling = true)]
			internal extern static void glFlushMappedNamedBufferRangeEXT(UInt32 buffer, IntPtr offset, UInt32 length);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFogCoorddEXT", ExactSpelling = true)]
			internal extern static void glFogCoorddEXT(double coord);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFogCoorddvEXT", ExactSpelling = true)]
			internal extern static unsafe void glFogCoorddvEXT(double* coord);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFogCoordfEXT", ExactSpelling = true)]
			internal extern static void glFogCoordfEXT(float coord);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFogCoordfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glFogCoordfvEXT(float* coord);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFogCoordPointerEXT", ExactSpelling = true)]
			internal extern static void glFogCoordPointerEXT(int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferDrawBufferEXT", ExactSpelling = true)]
			internal extern static void glFramebufferDrawBufferEXT(UInt32 framebuffer, int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferDrawBuffersEXT", ExactSpelling = true)]
			internal extern static unsafe void glFramebufferDrawBuffersEXT(UInt32 framebuffer, Int32 n, int* bufs);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferReadBufferEXT", ExactSpelling = true)]
			internal extern static void glFramebufferReadBufferEXT(UInt32 framebuffer, int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferRenderbufferEXT", ExactSpelling = true)]
			internal extern static void glFramebufferRenderbufferEXT(int target, int attachment, int renderbuffertarget, UInt32 renderbuffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferTexture1DEXT", ExactSpelling = true)]
			internal extern static void glFramebufferTexture1DEXT(int target, int attachment, int textarget, UInt32 texture, int level);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferTexture2DEXT", ExactSpelling = true)]
			internal extern static void glFramebufferTexture2DEXT(int target, int attachment, int textarget, UInt32 texture, int level);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferTexture3DEXT", ExactSpelling = true)]
			internal extern static void glFramebufferTexture3DEXT(int target, int attachment, int textarget, UInt32 texture, int level, int zoffset);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferTextureEXT", ExactSpelling = true)]
			internal extern static void glFramebufferTextureEXT(int target, int attachment, UInt32 texture, int level);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferTextureFaceEXT", ExactSpelling = true)]
			internal extern static void glFramebufferTextureFaceEXT(int target, int attachment, UInt32 texture, int level, int face);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferTextureLayerEXT", ExactSpelling = true)]
			internal extern static void glFramebufferTextureLayerEXT(int target, int attachment, UInt32 texture, int level, int layer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenerateMipmapEXT", ExactSpelling = true)]
			internal extern static void glGenerateMipmapEXT(int target);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenerateMultiTexMipmapEXT", ExactSpelling = true)]
			internal extern static void glGenerateMultiTexMipmapEXT(int texunit, int target);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenerateTextureMipmapEXT", ExactSpelling = true)]
			internal extern static void glGenerateTextureMipmapEXT(UInt32 texture, int target);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenFramebuffersEXT", ExactSpelling = true)]
			internal extern static unsafe void glGenFramebuffersEXT(Int32 n, [Out]UInt32* framebuffers);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenRenderbuffersEXT", ExactSpelling = true)]
			internal extern static unsafe void glGenRenderbuffersEXT(Int32 n, [Out]UInt32* renderbuffers);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenSymbolsEXT", ExactSpelling = true)]
			internal extern static UInt32 glGenSymbolsEXT(int datatype, int storagetype, int range, UInt32 components);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenTexturesEXT", ExactSpelling = true)]
			internal extern static unsafe void glGenTexturesEXT(Int32 n, [Out]UInt32* textures);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenVertexShadersEXT", ExactSpelling = true)]
			internal extern static UInt32 glGenVertexShadersEXT(UInt32 range);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetBooleanIndexedvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetBooleanIndexedvEXT(int target, UInt32 index, [Out]bool* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetColorTableEXT", ExactSpelling = true)]
			internal extern static void glGetColorTableEXT(int target, int format, int type, [Out]IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetColorTableParameterfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetColorTableParameterfvEXT(int target, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetColorTableParameterivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetColorTableParameterivEXT(int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetCompressedMultiTexImageEXT", ExactSpelling = true)]
			internal extern static void glGetCompressedMultiTexImageEXT(int texunit, int target, int lod, [Out]IntPtr img);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetCompressedTextureImageEXT", ExactSpelling = true)]
			internal extern static void glGetCompressedTextureImageEXT(UInt32 texture, int target, int lod, [Out]IntPtr img);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetConvolutionFilterEXT", ExactSpelling = true)]
			internal extern static void glGetConvolutionFilterEXT(int target, int format, int type, [Out]IntPtr image);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetConvolutionParameterfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetConvolutionParameterfvEXT(int target, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetConvolutionParameterivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetConvolutionParameterivEXT(int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetDoubleIndexedvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetDoubleIndexedvEXT(int target, UInt32 index, [Out]double* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetFloatIndexedvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetFloatIndexedvEXT(int target, UInt32 index, [Out]float* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetFragDataLocationEXT", ExactSpelling = true)]
			internal extern static int glGetFragDataLocationEXT(UInt32 program, string name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetFramebufferAttachmentParameterivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetFramebufferAttachmentParameterivEXT(int target, int attachment, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetFramebufferParameterivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetFramebufferParameterivEXT(UInt32 framebuffer, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetHistogramEXT", ExactSpelling = true)]
			internal extern static void glGetHistogramEXT(int target, bool reset, int format, int type, [Out]IntPtr values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetHistogramParameterfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetHistogramParameterfvEXT(int target, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetHistogramParameterivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetHistogramParameterivEXT(int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetIntegerIndexedvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetIntegerIndexedvEXT(int target, UInt32 index, [Out]int* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetInvariantBooleanvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetInvariantBooleanvEXT(UInt32 id, int value, [Out]bool* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetInvariantFloatvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetInvariantFloatvEXT(UInt32 id, int value, [Out]float* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetInvariantIntegervEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetInvariantIntegervEXT(UInt32 id, int value, [Out]int* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetLocalConstantBooleanvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetLocalConstantBooleanvEXT(UInt32 id, int value, [Out]bool* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetLocalConstantFloatvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetLocalConstantFloatvEXT(UInt32 id, int value, [Out]float* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetLocalConstantIntegervEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetLocalConstantIntegervEXT(UInt32 id, int value, [Out]int* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMinmaxEXT", ExactSpelling = true)]
			internal extern static void glGetMinmaxEXT(int target, bool reset, int format, int type, [Out]IntPtr values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMinmaxParameterfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetMinmaxParameterfvEXT(int target, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMinmaxParameterivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetMinmaxParameterivEXT(int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMultiTexEnvfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetMultiTexEnvfvEXT(int texunit, int target, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMultiTexEnvivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetMultiTexEnvivEXT(int texunit, int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMultiTexGendvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetMultiTexGendvEXT(int texunit, int coord, int pname, [Out]double* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMultiTexGenfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetMultiTexGenfvEXT(int texunit, int coord, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMultiTexGenivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetMultiTexGenivEXT(int texunit, int coord, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMultiTexImageEXT", ExactSpelling = true)]
			internal extern static void glGetMultiTexImageEXT(int texunit, int target, int level, int format, int type, [Out]IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMultiTexLevelParameterfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetMultiTexLevelParameterfvEXT(int texunit, int target, int level, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMultiTexLevelParameterivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetMultiTexLevelParameterivEXT(int texunit, int target, int level, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMultiTexParameterfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetMultiTexParameterfvEXT(int texunit, int target, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMultiTexParameterIivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetMultiTexParameterIivEXT(int texunit, int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMultiTexParameterIuivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetMultiTexParameterIuivEXT(int texunit, int target, int pname, [Out]UInt32* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMultiTexParameterivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetMultiTexParameterivEXT(int texunit, int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetNamedBufferParameterivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetNamedBufferParameterivEXT(UInt32 buffer, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetNamedBufferPointervEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetNamedBufferPointervEXT(UInt32 buffer, int pname, [Out]IntPtr* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetNamedBufferSubDataEXT", ExactSpelling = true)]
			internal extern static void glGetNamedBufferSubDataEXT(UInt32 buffer, IntPtr offset, UInt32 size, [Out]IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetNamedFramebufferAttachmentParameterivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetNamedFramebufferAttachmentParameterivEXT(UInt32 framebuffer, int attachment, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetNamedProgramivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetNamedProgramivEXT(UInt32 program, int target, int pname, [Out]int @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetNamedProgramLocalParameterdvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetNamedProgramLocalParameterdvEXT(UInt32 program, int target, UInt32 index, [Out]double* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetNamedProgramLocalParameterfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetNamedProgramLocalParameterfvEXT(UInt32 program, int target, UInt32 index, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetNamedProgramLocalParameterIivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetNamedProgramLocalParameterIivEXT(UInt32 program, int target, UInt32 index, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetNamedProgramLocalParameterIuivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetNamedProgramLocalParameterIuivEXT(UInt32 program, int target, UInt32 index, [Out]UInt32* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetNamedProgramStringEXT", ExactSpelling = true)]
			internal extern static void glGetNamedProgramStringEXT(UInt32 program, int target, int pname, [Out]IntPtr @string);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetNamedRenderbufferParameterivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetNamedRenderbufferParameterivEXT(UInt32 renderbuffer, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetPointerIndexedvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetPointerIndexedvEXT(int target, UInt32 index, [Out]IntPtr* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetPointervEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetPointervEXT(int pname, [Out]IntPtr @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetQueryObjecti64vEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetQueryObjecti64vEXT(UInt32 id, int pname, [Out]Int64* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetQueryObjectui64vEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetQueryObjectui64vEXT(UInt32 id, int pname, [Out]UInt64* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetRenderbufferParameterivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetRenderbufferParameterivEXT(int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetSeparableFilterEXT", ExactSpelling = true)]
			internal extern static void glGetSeparableFilterEXT(int target, int format, int type, [Out]IntPtr row, [Out]IntPtr column, [Out]IntPtr span);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTexParameterIivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetTexParameterIivEXT(int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTexParameterIuivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetTexParameterIuivEXT(int target, int pname, [Out]UInt32* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTextureImageEXT", ExactSpelling = true)]
			internal extern static void glGetTextureImageEXT(UInt32 texture, int target, int level, int format, int type, [Out]IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTextureLevelParameterfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetTextureLevelParameterfvEXT(UInt32 texture, int target, int level, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTextureLevelParameterivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetTextureLevelParameterivEXT(UInt32 texture, int target, int level, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTextureParameterfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetTextureParameterfvEXT(UInt32 texture, int target, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTextureParameterIivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetTextureParameterIivEXT(UInt32 texture, int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTextureParameterIuivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetTextureParameterIuivEXT(UInt32 texture, int target, int pname, [Out]UInt32* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTextureParameterivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetTextureParameterivEXT(UInt32 texture, int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTransformFeedbackVaryingEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetTransformFeedbackVaryingEXT(UInt32 program, UInt32 index, Int32 bufSize, [Out]Int32 length, [Out]Int32 size, [Out]int type, [Out]StringBuilder name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetUniformBufferSizeEXT", ExactSpelling = true)]
			internal extern static int glGetUniformBufferSizeEXT(UInt32 program, int location);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetUniformOffsetEXT", ExactSpelling = true)]
			internal extern static IntPtr glGetUniformOffsetEXT(UInt32 program, int location);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetUniformuivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetUniformuivEXT(UInt32 program, int location, [Out]UInt32* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetVariantBooleanvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetVariantBooleanvEXT(UInt32 id, int value, [Out]bool* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetVariantFloatvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetVariantFloatvEXT(UInt32 id, int value, [Out]float* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetVariantIntegervEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetVariantIntegervEXT(UInt32 id, int value, [Out]int* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetVariantPointervEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetVariantPointervEXT(UInt32 id, int value, [Out]IntPtr* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetVertexAttribIivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetVertexAttribIivEXT(UInt32 index, int pname, [Out]int @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetVertexAttribIuivEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetVertexAttribIuivEXT(UInt32 index, int pname, [Out]UInt32 @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetVertexAttribLdvEXT", ExactSpelling = true)]
			internal extern static unsafe void glGetVertexAttribLdvEXT(UInt32 index, int pname, [Out]double* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glHistogramEXT", ExactSpelling = true)]
			internal extern static void glHistogramEXT(int target, Int32 width, int internalformat, bool sink);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glImportSyncEXT", ExactSpelling = true)]
			internal extern static int glImportSyncEXT(int external_sync_type, IntPtr external_sync, uint flags);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIndexFuncEXT", ExactSpelling = true)]
			internal extern static void glIndexFuncEXT(int func, float @ref);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIndexMaterialEXT", ExactSpelling = true)]
			internal extern static void glIndexMaterialEXT(int face, int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIndexPointerEXT", ExactSpelling = true)]
			internal extern static void glIndexPointerEXT(int type, Int32 stride, Int32 count, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glInsertComponentEXT", ExactSpelling = true)]
			internal extern static void glInsertComponentEXT(UInt32 res, UInt32 src, UInt32 num);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsEnabledIndexedEXT", ExactSpelling = true)]
			internal extern static bool glIsEnabledIndexedEXT(int target, UInt32 index);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsFramebufferEXT", ExactSpelling = true)]
			internal extern static bool glIsFramebufferEXT(UInt32 framebuffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsRenderbufferEXT", ExactSpelling = true)]
			internal extern static bool glIsRenderbufferEXT(UInt32 renderbuffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsTextureEXT", ExactSpelling = true)]
			internal extern static bool glIsTextureEXT(UInt32 texture);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsVariantEnabledEXT", ExactSpelling = true)]
			internal extern static bool glIsVariantEnabledEXT(UInt32 id, int cap);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLockArraysEXT", ExactSpelling = true)]
			internal extern static void glLockArraysEXT(int first, Int32 count);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMapNamedBufferEXT", ExactSpelling = true)]
			internal extern static IntPtr glMapNamedBufferEXT(UInt32 buffer, int access);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMapNamedBufferRangeEXT", ExactSpelling = true)]
			internal extern static IntPtr glMapNamedBufferRangeEXT(UInt32 buffer, IntPtr offset, UInt32 length, uint access);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixFrustumEXT", ExactSpelling = true)]
			internal extern static void glMatrixFrustumEXT(int mode, double left, double right, double bottom, double top, double zNear, double zFar);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixLoaddEXT", ExactSpelling = true)]
			internal extern static unsafe void glMatrixLoaddEXT(int mode, double* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixLoadfEXT", ExactSpelling = true)]
			internal extern static unsafe void glMatrixLoadfEXT(int mode, float* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixLoadIdentityEXT", ExactSpelling = true)]
			internal extern static void glMatrixLoadIdentityEXT(int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixLoadTransposedEXT", ExactSpelling = true)]
			internal extern static unsafe void glMatrixLoadTransposedEXT(int mode, double* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixLoadTransposefEXT", ExactSpelling = true)]
			internal extern static unsafe void glMatrixLoadTransposefEXT(int mode, float* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixMultdEXT", ExactSpelling = true)]
			internal extern static unsafe void glMatrixMultdEXT(int mode, double* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixMultfEXT", ExactSpelling = true)]
			internal extern static unsafe void glMatrixMultfEXT(int mode, float* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixMultTransposedEXT", ExactSpelling = true)]
			internal extern static unsafe void glMatrixMultTransposedEXT(int mode, double* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixMultTransposefEXT", ExactSpelling = true)]
			internal extern static unsafe void glMatrixMultTransposefEXT(int mode, float* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixOrthoEXT", ExactSpelling = true)]
			internal extern static void glMatrixOrthoEXT(int mode, double left, double right, double bottom, double top, double zNear, double zFar);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixPopEXT", ExactSpelling = true)]
			internal extern static void glMatrixPopEXT(int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixPushEXT", ExactSpelling = true)]
			internal extern static void glMatrixPushEXT(int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixRotatedEXT", ExactSpelling = true)]
			internal extern static void glMatrixRotatedEXT(int mode, double angle, double x, double y, double z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixRotatefEXT", ExactSpelling = true)]
			internal extern static void glMatrixRotatefEXT(int mode, float angle, float x, float y, float z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixScaledEXT", ExactSpelling = true)]
			internal extern static void glMatrixScaledEXT(int mode, double x, double y, double z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixScalefEXT", ExactSpelling = true)]
			internal extern static void glMatrixScalefEXT(int mode, float x, float y, float z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixTranslatedEXT", ExactSpelling = true)]
			internal extern static void glMatrixTranslatedEXT(int mode, double x, double y, double z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixTranslatefEXT", ExactSpelling = true)]
			internal extern static void glMatrixTranslatefEXT(int mode, float x, float y, float z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMemoryBarrierEXT", ExactSpelling = true)]
			internal extern static void glMemoryBarrierEXT(uint barriers);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMinmaxEXT", ExactSpelling = true)]
			internal extern static void glMinmaxEXT(int target, int internalformat, bool sink);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiDrawArraysEXT", ExactSpelling = true)]
			internal extern static unsafe void glMultiDrawArraysEXT(int mode, int* first, Int32* count, Int32 primcount);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiDrawElementsEXT", ExactSpelling = true)]
			internal extern static unsafe void glMultiDrawElementsEXT(int mode, Int32* count, int type, IntPtr* indices, Int32 primcount);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexBufferEXT", ExactSpelling = true)]
			internal extern static void glMultiTexBufferEXT(int texunit, int target, int internalformat, UInt32 buffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoordPointerEXT", ExactSpelling = true)]
			internal extern static void glMultiTexCoordPointerEXT(int texunit, int size, int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexEnvfEXT", ExactSpelling = true)]
			internal extern static void glMultiTexEnvfEXT(int texunit, int target, int pname, float param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexEnvfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexEnvfvEXT(int texunit, int target, int pname, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexEnviEXT", ExactSpelling = true)]
			internal extern static void glMultiTexEnviEXT(int texunit, int target, int pname, int param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexEnvivEXT", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexEnvivEXT(int texunit, int target, int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexGendEXT", ExactSpelling = true)]
			internal extern static void glMultiTexGendEXT(int texunit, int coord, int pname, double param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexGendvEXT", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexGendvEXT(int texunit, int coord, int pname, double* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexGenfEXT", ExactSpelling = true)]
			internal extern static void glMultiTexGenfEXT(int texunit, int coord, int pname, float param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexGenfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexGenfvEXT(int texunit, int coord, int pname, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexGeniEXT", ExactSpelling = true)]
			internal extern static void glMultiTexGeniEXT(int texunit, int coord, int pname, int param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexGenivEXT", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexGenivEXT(int texunit, int coord, int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexImage1DEXT", ExactSpelling = true)]
			internal extern static void glMultiTexImage1DEXT(int texunit, int target, int level, int internalformat, Int32 width, int border, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexImage2DEXT", ExactSpelling = true)]
			internal extern static void glMultiTexImage2DEXT(int texunit, int target, int level, int internalformat, Int32 width, Int32 height, int border, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexImage3DEXT", ExactSpelling = true)]
			internal extern static void glMultiTexImage3DEXT(int texunit, int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexParameterfEXT", ExactSpelling = true)]
			internal extern static void glMultiTexParameterfEXT(int texunit, int target, int pname, float param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexParameterfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexParameterfvEXT(int texunit, int target, int pname, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexParameteriEXT", ExactSpelling = true)]
			internal extern static void glMultiTexParameteriEXT(int texunit, int target, int pname, int param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexParameterIivEXT", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexParameterIivEXT(int texunit, int target, int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexParameterIuivEXT", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexParameterIuivEXT(int texunit, int target, int pname, UInt32* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexParameterivEXT", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexParameterivEXT(int texunit, int target, int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexRenderbufferEXT", ExactSpelling = true)]
			internal extern static void glMultiTexRenderbufferEXT(int texunit, int target, UInt32 renderbuffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexSubImage1DEXT", ExactSpelling = true)]
			internal extern static void glMultiTexSubImage1DEXT(int texunit, int target, int level, int xoffset, Int32 width, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexSubImage2DEXT", ExactSpelling = true)]
			internal extern static void glMultiTexSubImage2DEXT(int texunit, int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexSubImage3DEXT", ExactSpelling = true)]
			internal extern static void glMultiTexSubImage3DEXT(int texunit, int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedBufferDataEXT", ExactSpelling = true)]
			internal extern static void glNamedBufferDataEXT(UInt32 buffer, UInt32 size, IntPtr data, int usage);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedBufferSubDataEXT", ExactSpelling = true)]
			internal extern static void glNamedBufferSubDataEXT(UInt32 buffer, IntPtr offset, UInt32 size, IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedCopyBufferSubDataEXT", ExactSpelling = true)]
			internal extern static void glNamedCopyBufferSubDataEXT(UInt32 readBuffer, UInt32 writeBuffer, IntPtr readOffset, IntPtr writeOffset, UInt32 size);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedFramebufferRenderbufferEXT", ExactSpelling = true)]
			internal extern static void glNamedFramebufferRenderbufferEXT(UInt32 framebuffer, int attachment, int renderbuffertarget, UInt32 renderbuffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedFramebufferTexture1DEXT", ExactSpelling = true)]
			internal extern static void glNamedFramebufferTexture1DEXT(UInt32 framebuffer, int attachment, int textarget, UInt32 texture, int level);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedFramebufferTexture2DEXT", ExactSpelling = true)]
			internal extern static void glNamedFramebufferTexture2DEXT(UInt32 framebuffer, int attachment, int textarget, UInt32 texture, int level);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedFramebufferTexture3DEXT", ExactSpelling = true)]
			internal extern static void glNamedFramebufferTexture3DEXT(UInt32 framebuffer, int attachment, int textarget, UInt32 texture, int level, int zoffset);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedFramebufferTextureEXT", ExactSpelling = true)]
			internal extern static void glNamedFramebufferTextureEXT(UInt32 framebuffer, int attachment, UInt32 texture, int level);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedFramebufferTextureFaceEXT", ExactSpelling = true)]
			internal extern static void glNamedFramebufferTextureFaceEXT(UInt32 framebuffer, int attachment, UInt32 texture, int level, int face);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedFramebufferTextureLayerEXT", ExactSpelling = true)]
			internal extern static void glNamedFramebufferTextureLayerEXT(UInt32 framebuffer, int attachment, UInt32 texture, int level, int layer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedProgramLocalParameter4dEXT", ExactSpelling = true)]
			internal extern static void glNamedProgramLocalParameter4dEXT(UInt32 program, int target, UInt32 index, double x, double y, double z, double w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedProgramLocalParameter4dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glNamedProgramLocalParameter4dvEXT(UInt32 program, int target, UInt32 index, double* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedProgramLocalParameter4fEXT", ExactSpelling = true)]
			internal extern static void glNamedProgramLocalParameter4fEXT(UInt32 program, int target, UInt32 index, float x, float y, float z, float w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedProgramLocalParameter4fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glNamedProgramLocalParameter4fvEXT(UInt32 program, int target, UInt32 index, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedProgramLocalParameterI4iEXT", ExactSpelling = true)]
			internal extern static void glNamedProgramLocalParameterI4iEXT(UInt32 program, int target, UInt32 index, int x, int y, int z, int w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedProgramLocalParameterI4ivEXT", ExactSpelling = true)]
			internal extern static unsafe void glNamedProgramLocalParameterI4ivEXT(UInt32 program, int target, UInt32 index, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedProgramLocalParameterI4uiEXT", ExactSpelling = true)]
			internal extern static void glNamedProgramLocalParameterI4uiEXT(UInt32 program, int target, UInt32 index, UInt32 x, UInt32 y, UInt32 z, UInt32 w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedProgramLocalParameterI4uivEXT", ExactSpelling = true)]
			internal extern static unsafe void glNamedProgramLocalParameterI4uivEXT(UInt32 program, int target, UInt32 index, UInt32* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedProgramLocalParameters4fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glNamedProgramLocalParameters4fvEXT(UInt32 program, int target, UInt32 index, Int32 count, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedProgramLocalParametersI4ivEXT", ExactSpelling = true)]
			internal extern static unsafe void glNamedProgramLocalParametersI4ivEXT(UInt32 program, int target, UInt32 index, Int32 count, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedProgramLocalParametersI4uivEXT", ExactSpelling = true)]
			internal extern static unsafe void glNamedProgramLocalParametersI4uivEXT(UInt32 program, int target, UInt32 index, Int32 count, UInt32* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedProgramStringEXT", ExactSpelling = true)]
			internal extern static void glNamedProgramStringEXT(UInt32 program, int target, int format, Int32 len, IntPtr @string);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedRenderbufferStorageEXT", ExactSpelling = true)]
			internal extern static void glNamedRenderbufferStorageEXT(UInt32 renderbuffer, int internalformat, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedRenderbufferStorageMultisampleCoverageEXT", ExactSpelling = true)]
			internal extern static void glNamedRenderbufferStorageMultisampleCoverageEXT(UInt32 renderbuffer, Int32 coverageSamples, Int32 colorSamples, int internalformat, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedRenderbufferStorageMultisampleEXT", ExactSpelling = true)]
			internal extern static void glNamedRenderbufferStorageMultisampleEXT(UInt32 renderbuffer, Int32 samples, int internalformat, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNormalPointerEXT", ExactSpelling = true)]
			internal extern static void glNormalPointerEXT(int type, Int32 stride, Int32 count, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPixelTransformParameterfEXT", ExactSpelling = true)]
			internal extern static void glPixelTransformParameterfEXT(int target, int pname, float param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPixelTransformParameterfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glPixelTransformParameterfvEXT(int target, int pname, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPixelTransformParameteriEXT", ExactSpelling = true)]
			internal extern static void glPixelTransformParameteriEXT(int target, int pname, int param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPixelTransformParameterivEXT", ExactSpelling = true)]
			internal extern static unsafe void glPixelTransformParameterivEXT(int target, int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPointParameterfEXT", ExactSpelling = true)]
			internal extern static void glPointParameterfEXT(int pname, float param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPointParameterfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glPointParameterfvEXT(int pname, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPolygonOffsetEXT", ExactSpelling = true)]
			internal extern static void glPolygonOffsetEXT(float factor, float bias);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPrioritizeTexturesEXT", ExactSpelling = true)]
			internal extern static unsafe void glPrioritizeTexturesEXT(Int32 n, UInt32* textures, float* priorities);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramEnvParameters4fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramEnvParameters4fvEXT(int target, UInt32 index, Int32 count, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramLocalParameters4fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramLocalParameters4fvEXT(int target, UInt32 index, Int32 count, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramParameteriEXT", ExactSpelling = true)]
			internal extern static void glProgramParameteriEXT(UInt32 program, int pname, int value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform1dEXT", ExactSpelling = true)]
			internal extern static void glProgramUniform1dEXT(UInt32 program, int location, double x);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform1dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform1dvEXT(UInt32 program, int location, Int32 count, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform1fEXT", ExactSpelling = true)]
			internal extern static void glProgramUniform1fEXT(UInt32 program, int location, float v0);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform1fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform1fvEXT(UInt32 program, int location, Int32 count, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform1iEXT", ExactSpelling = true)]
			internal extern static void glProgramUniform1iEXT(UInt32 program, int location, int v0);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform1ivEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform1ivEXT(UInt32 program, int location, Int32 count, int* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform1uiEXT", ExactSpelling = true)]
			internal extern static void glProgramUniform1uiEXT(UInt32 program, int location, UInt32 v0);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform1uivEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform1uivEXT(UInt32 program, int location, Int32 count, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform2dEXT", ExactSpelling = true)]
			internal extern static void glProgramUniform2dEXT(UInt32 program, int location, double x, double y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform2dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform2dvEXT(UInt32 program, int location, Int32 count, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform2fEXT", ExactSpelling = true)]
			internal extern static void glProgramUniform2fEXT(UInt32 program, int location, float v0, float v1);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform2fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform2fvEXT(UInt32 program, int location, Int32 count, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform2iEXT", ExactSpelling = true)]
			internal extern static void glProgramUniform2iEXT(UInt32 program, int location, int v0, int v1);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform2ivEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform2ivEXT(UInt32 program, int location, Int32 count, int* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform2uiEXT", ExactSpelling = true)]
			internal extern static void glProgramUniform2uiEXT(UInt32 program, int location, UInt32 v0, UInt32 v1);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform2uivEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform2uivEXT(UInt32 program, int location, Int32 count, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform3dEXT", ExactSpelling = true)]
			internal extern static void glProgramUniform3dEXT(UInt32 program, int location, double x, double y, double z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform3dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform3dvEXT(UInt32 program, int location, Int32 count, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform3fEXT", ExactSpelling = true)]
			internal extern static void glProgramUniform3fEXT(UInt32 program, int location, float v0, float v1, float v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform3fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform3fvEXT(UInt32 program, int location, Int32 count, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform3iEXT", ExactSpelling = true)]
			internal extern static void glProgramUniform3iEXT(UInt32 program, int location, int v0, int v1, int v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform3ivEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform3ivEXT(UInt32 program, int location, Int32 count, int* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform3uiEXT", ExactSpelling = true)]
			internal extern static void glProgramUniform3uiEXT(UInt32 program, int location, UInt32 v0, UInt32 v1, UInt32 v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform3uivEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform3uivEXT(UInt32 program, int location, Int32 count, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform4dEXT", ExactSpelling = true)]
			internal extern static void glProgramUniform4dEXT(UInt32 program, int location, double x, double y, double z, double w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform4dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform4dvEXT(UInt32 program, int location, Int32 count, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform4fEXT", ExactSpelling = true)]
			internal extern static void glProgramUniform4fEXT(UInt32 program, int location, float v0, float v1, float v2, float v3);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform4fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform4fvEXT(UInt32 program, int location, Int32 count, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform4iEXT", ExactSpelling = true)]
			internal extern static void glProgramUniform4iEXT(UInt32 program, int location, int v0, int v1, int v2, int v3);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform4ivEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform4ivEXT(UInt32 program, int location, Int32 count, int* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform4uiEXT", ExactSpelling = true)]
			internal extern static void glProgramUniform4uiEXT(UInt32 program, int location, UInt32 v0, UInt32 v1, UInt32 v2, UInt32 v3);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform4uivEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform4uivEXT(UInt32 program, int location, Int32 count, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix2dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix2dvEXT(UInt32 program, int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix2fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix2fvEXT(UInt32 program, int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix2x3dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix2x3dvEXT(UInt32 program, int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix2x3fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix2x3fvEXT(UInt32 program, int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix2x4dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix2x4dvEXT(UInt32 program, int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix2x4fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix2x4fvEXT(UInt32 program, int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix3dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix3dvEXT(UInt32 program, int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix3fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix3fvEXT(UInt32 program, int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix3x2dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix3x2dvEXT(UInt32 program, int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix3x2fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix3x2fvEXT(UInt32 program, int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix3x4dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix3x4dvEXT(UInt32 program, int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix3x4fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix3x4fvEXT(UInt32 program, int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix4dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix4dvEXT(UInt32 program, int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix4fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix4fvEXT(UInt32 program, int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix4x2dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix4x2dvEXT(UInt32 program, int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix4x2fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix4x2fvEXT(UInt32 program, int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix4x3dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix4x3dvEXT(UInt32 program, int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix4x3fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix4x3fvEXT(UInt32 program, int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProvokingVertexEXT", ExactSpelling = true)]
			internal extern static void glProvokingVertexEXT(int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPushClientAttribDefaultEXT", ExactSpelling = true)]
			internal extern static void glPushClientAttribDefaultEXT(uint mask);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRenderbufferStorageEXT", ExactSpelling = true)]
			internal extern static void glRenderbufferStorageEXT(int target, int internalformat, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRenderbufferStorageMultisampleEXT", ExactSpelling = true)]
			internal extern static void glRenderbufferStorageMultisampleEXT(int target, Int32 samples, int internalformat, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glResetHistogramEXT", ExactSpelling = true)]
			internal extern static void glResetHistogramEXT(int target);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glResetMinmaxEXT", ExactSpelling = true)]
			internal extern static void glResetMinmaxEXT(int target);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSampleMaskEXT", ExactSpelling = true)]
			internal extern static void glSampleMaskEXT(float value, bool invert);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSamplePatternEXT", ExactSpelling = true)]
			internal extern static void glSamplePatternEXT(int pattern);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3bEXT", ExactSpelling = true)]
			internal extern static void glSecondaryColor3bEXT(sbyte red, sbyte green, sbyte blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3bvEXT", ExactSpelling = true)]
			internal extern static unsafe void glSecondaryColor3bvEXT(sbyte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3dEXT", ExactSpelling = true)]
			internal extern static void glSecondaryColor3dEXT(double red, double green, double blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glSecondaryColor3dvEXT(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3fEXT", ExactSpelling = true)]
			internal extern static void glSecondaryColor3fEXT(float red, float green, float blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glSecondaryColor3fvEXT(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3iEXT", ExactSpelling = true)]
			internal extern static void glSecondaryColor3iEXT(int red, int green, int blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3ivEXT", ExactSpelling = true)]
			internal extern static unsafe void glSecondaryColor3ivEXT(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3sEXT", ExactSpelling = true)]
			internal extern static void glSecondaryColor3sEXT(Int16 red, Int16 green, Int16 blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3svEXT", ExactSpelling = true)]
			internal extern static unsafe void glSecondaryColor3svEXT(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3ubEXT", ExactSpelling = true)]
			internal extern static void glSecondaryColor3ubEXT(byte red, byte green, byte blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3ubvEXT", ExactSpelling = true)]
			internal extern static unsafe void glSecondaryColor3ubvEXT(byte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3uiEXT", ExactSpelling = true)]
			internal extern static void glSecondaryColor3uiEXT(UInt32 red, UInt32 green, UInt32 blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3uivEXT", ExactSpelling = true)]
			internal extern static unsafe void glSecondaryColor3uivEXT(UInt32* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3usEXT", ExactSpelling = true)]
			internal extern static void glSecondaryColor3usEXT(UInt16 red, UInt16 green, UInt16 blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3usvEXT", ExactSpelling = true)]
			internal extern static unsafe void glSecondaryColor3usvEXT(UInt16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColorPointerEXT", ExactSpelling = true)]
			internal extern static void glSecondaryColorPointerEXT(int size, int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSeparableFilter2DEXT", ExactSpelling = true)]
			internal extern static void glSeparableFilter2DEXT(int target, int internalformat, Int32 width, Int32 height, int format, int type, IntPtr row, IntPtr column);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSetInvariantEXT", ExactSpelling = true)]
			internal extern static void glSetInvariantEXT(UInt32 id, int type, IntPtr addr);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSetLocalConstantEXT", ExactSpelling = true)]
			internal extern static void glSetLocalConstantEXT(UInt32 id, int type, IntPtr addr);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glShaderOp1EXT", ExactSpelling = true)]
			internal extern static void glShaderOp1EXT(int op, UInt32 res, UInt32 arg1);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glShaderOp2EXT", ExactSpelling = true)]
			internal extern static void glShaderOp2EXT(int op, UInt32 res, UInt32 arg1, UInt32 arg2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glShaderOp3EXT", ExactSpelling = true)]
			internal extern static void glShaderOp3EXT(int op, UInt32 res, UInt32 arg1, UInt32 arg2, UInt32 arg3);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glStencilClearTagEXT", ExactSpelling = true)]
			internal extern static void glStencilClearTagEXT(Int32 stencilTagBits, UInt32 stencilClearTag);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSwizzleEXT", ExactSpelling = true)]
			internal extern static void glSwizzleEXT(UInt32 res, UInt32 @in, int outX, int outY, int outZ, int outW);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTangent3bEXT", ExactSpelling = true)]
			internal extern static void glTangent3bEXT(sbyte tx, sbyte ty, sbyte tz);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTangent3bvEXT", ExactSpelling = true)]
			internal extern static unsafe void glTangent3bvEXT(sbyte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTangent3dEXT", ExactSpelling = true)]
			internal extern static void glTangent3dEXT(double tx, double ty, double tz);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTangent3dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glTangent3dvEXT(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTangent3fEXT", ExactSpelling = true)]
			internal extern static void glTangent3fEXT(float tx, float ty, float tz);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTangent3fvEXT", ExactSpelling = true)]
			internal extern static unsafe void glTangent3fvEXT(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTangent3iEXT", ExactSpelling = true)]
			internal extern static void glTangent3iEXT(int tx, int ty, int tz);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTangent3ivEXT", ExactSpelling = true)]
			internal extern static unsafe void glTangent3ivEXT(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTangent3sEXT", ExactSpelling = true)]
			internal extern static void glTangent3sEXT(Int16 tx, Int16 ty, Int16 tz);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTangent3svEXT", ExactSpelling = true)]
			internal extern static unsafe void glTangent3svEXT(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTangentPointerEXT", ExactSpelling = true)]
			internal extern static void glTangentPointerEXT(int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexBufferEXT", ExactSpelling = true)]
			internal extern static void glTexBufferEXT(int target, int internalformat, UInt32 buffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoordPointerEXT", ExactSpelling = true)]
			internal extern static void glTexCoordPointerEXT(int size, int type, Int32 stride, Int32 count, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexImage3DEXT", ExactSpelling = true)]
			internal extern static void glTexImage3DEXT(int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexParameterIivEXT", ExactSpelling = true)]
			internal extern static unsafe void glTexParameterIivEXT(int target, int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexParameterIuivEXT", ExactSpelling = true)]
			internal extern static unsafe void glTexParameterIuivEXT(int target, int pname, UInt32* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexSubImage1DEXT", ExactSpelling = true)]
			internal extern static void glTexSubImage1DEXT(int target, int level, int xoffset, Int32 width, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexSubImage2DEXT", ExactSpelling = true)]
			internal extern static void glTexSubImage2DEXT(int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexSubImage3DEXT", ExactSpelling = true)]
			internal extern static void glTexSubImage3DEXT(int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureBufferEXT", ExactSpelling = true)]
			internal extern static void glTextureBufferEXT(UInt32 texture, int target, int internalformat, UInt32 buffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureImage1DEXT", ExactSpelling = true)]
			internal extern static void glTextureImage1DEXT(UInt32 texture, int target, int level, int internalformat, Int32 width, int border, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureImage2DEXT", ExactSpelling = true)]
			internal extern static void glTextureImage2DEXT(UInt32 texture, int target, int level, int internalformat, Int32 width, Int32 height, int border, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureImage3DEXT", ExactSpelling = true)]
			internal extern static void glTextureImage3DEXT(UInt32 texture, int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureLightEXT", ExactSpelling = true)]
			internal extern static void glTextureLightEXT(int pname);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureMaterialEXT", ExactSpelling = true)]
			internal extern static void glTextureMaterialEXT(int face, int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureNormalEXT", ExactSpelling = true)]
			internal extern static void glTextureNormalEXT(int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureParameterfEXT", ExactSpelling = true)]
			internal extern static void glTextureParameterfEXT(UInt32 texture, int target, int pname, float param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureParameterfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glTextureParameterfvEXT(UInt32 texture, int target, int pname, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureParameteriEXT", ExactSpelling = true)]
			internal extern static void glTextureParameteriEXT(UInt32 texture, int target, int pname, int param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureParameterIivEXT", ExactSpelling = true)]
			internal extern static unsafe void glTextureParameterIivEXT(UInt32 texture, int target, int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureParameterIuivEXT", ExactSpelling = true)]
			internal extern static unsafe void glTextureParameterIuivEXT(UInt32 texture, int target, int pname, UInt32* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureParameterivEXT", ExactSpelling = true)]
			internal extern static unsafe void glTextureParameterivEXT(UInt32 texture, int target, int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureRenderbufferEXT", ExactSpelling = true)]
			internal extern static void glTextureRenderbufferEXT(UInt32 texture, int target, UInt32 renderbuffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureStorage1DEXT", ExactSpelling = true)]
			internal extern static void glTextureStorage1DEXT(UInt32 texture, int target, Int32 levels, int internalformat, Int32 width);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureStorage2DEXT", ExactSpelling = true)]
			internal extern static void glTextureStorage2DEXT(UInt32 texture, int target, Int32 levels, int internalformat, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureStorage3DEXT", ExactSpelling = true)]
			internal extern static void glTextureStorage3DEXT(UInt32 texture, int target, Int32 levels, int internalformat, Int32 width, Int32 height, Int32 depth);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureSubImage1DEXT", ExactSpelling = true)]
			internal extern static void glTextureSubImage1DEXT(UInt32 texture, int target, int level, int xoffset, Int32 width, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureSubImage2DEXT", ExactSpelling = true)]
			internal extern static void glTextureSubImage2DEXT(UInt32 texture, int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTextureSubImage3DEXT", ExactSpelling = true)]
			internal extern static void glTextureSubImage3DEXT(UInt32 texture, int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTransformFeedbackVaryingsEXT", ExactSpelling = true)]
			internal extern static void glTransformFeedbackVaryingsEXT(UInt32 program, Int32 count, string[] varyings, int bufferMode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform1uiEXT", ExactSpelling = true)]
			internal extern static void glUniform1uiEXT(int location, UInt32 v0);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform1uivEXT", ExactSpelling = true)]
			internal extern static unsafe void glUniform1uivEXT(int location, Int32 count, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform2uiEXT", ExactSpelling = true)]
			internal extern static void glUniform2uiEXT(int location, UInt32 v0, UInt32 v1);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform2uivEXT", ExactSpelling = true)]
			internal extern static unsafe void glUniform2uivEXT(int location, Int32 count, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform3uiEXT", ExactSpelling = true)]
			internal extern static void glUniform3uiEXT(int location, UInt32 v0, UInt32 v1, UInt32 v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform3uivEXT", ExactSpelling = true)]
			internal extern static unsafe void glUniform3uivEXT(int location, Int32 count, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform4uiEXT", ExactSpelling = true)]
			internal extern static void glUniform4uiEXT(int location, UInt32 v0, UInt32 v1, UInt32 v2, UInt32 v3);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform4uivEXT", ExactSpelling = true)]
			internal extern static unsafe void glUniform4uivEXT(int location, Int32 count, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformBufferEXT", ExactSpelling = true)]
			internal extern static void glUniformBufferEXT(UInt32 program, int location, UInt32 buffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUnlockArraysEXT", ExactSpelling = true)]
			internal extern static void glUnlockArraysEXT();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUnmapNamedBufferEXT", ExactSpelling = true)]
			internal extern static bool glUnmapNamedBufferEXT(UInt32 buffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUseShaderProgramEXT", ExactSpelling = true)]
			internal extern static void glUseShaderProgramEXT(int type, UInt32 program);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVariantbvEXT", ExactSpelling = true)]
			internal extern static unsafe void glVariantbvEXT(UInt32 id, sbyte* addr);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVariantdvEXT", ExactSpelling = true)]
			internal extern static unsafe void glVariantdvEXT(UInt32 id, double* addr);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVariantfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glVariantfvEXT(UInt32 id, float* addr);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVariantivEXT", ExactSpelling = true)]
			internal extern static unsafe void glVariantivEXT(UInt32 id, int* addr);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVariantPointerEXT", ExactSpelling = true)]
			internal extern static void glVariantPointerEXT(UInt32 id, int type, UInt32 stride, IntPtr addr);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVariantsvEXT", ExactSpelling = true)]
			internal extern static unsafe void glVariantsvEXT(UInt32 id, Int16* addr);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVariantubvEXT", ExactSpelling = true)]
			internal extern static unsafe void glVariantubvEXT(UInt32 id, byte* addr);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVariantuivEXT", ExactSpelling = true)]
			internal extern static unsafe void glVariantuivEXT(UInt32 id, UInt32* addr);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVariantusvEXT", ExactSpelling = true)]
			internal extern static unsafe void glVariantusvEXT(UInt32 id, UInt16* addr);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexArrayVertexAttribLOffsetEXT", ExactSpelling = true)]
			internal extern static void glVertexArrayVertexAttribLOffsetEXT(UInt32 vaobj, UInt32 buffer, UInt32 index, int size, int type, Int32 stride, IntPtr offset);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI1iEXT", ExactSpelling = true)]
			internal extern static void glVertexAttribI1iEXT(UInt32 index, int x);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI1ivEXT", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI1ivEXT(UInt32 index, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI1uiEXT", ExactSpelling = true)]
			internal extern static void glVertexAttribI1uiEXT(UInt32 index, UInt32 x);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI1uivEXT", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI1uivEXT(UInt32 index, UInt32* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI2iEXT", ExactSpelling = true)]
			internal extern static void glVertexAttribI2iEXT(UInt32 index, int x, int y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI2ivEXT", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI2ivEXT(UInt32 index, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI2uiEXT", ExactSpelling = true)]
			internal extern static void glVertexAttribI2uiEXT(UInt32 index, UInt32 x, UInt32 y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI2uivEXT", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI2uivEXT(UInt32 index, UInt32* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI3iEXT", ExactSpelling = true)]
			internal extern static void glVertexAttribI3iEXT(UInt32 index, int x, int y, int z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI3ivEXT", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI3ivEXT(UInt32 index, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI3uiEXT", ExactSpelling = true)]
			internal extern static void glVertexAttribI3uiEXT(UInt32 index, UInt32 x, UInt32 y, UInt32 z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI3uivEXT", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI3uivEXT(UInt32 index, UInt32* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI4bvEXT", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI4bvEXT(UInt32 index, sbyte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI4iEXT", ExactSpelling = true)]
			internal extern static void glVertexAttribI4iEXT(UInt32 index, int x, int y, int z, int w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI4ivEXT", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI4ivEXT(UInt32 index, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI4svEXT", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI4svEXT(UInt32 index, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI4ubvEXT", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI4ubvEXT(UInt32 index, byte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI4uiEXT", ExactSpelling = true)]
			internal extern static void glVertexAttribI4uiEXT(UInt32 index, UInt32 x, UInt32 y, UInt32 z, UInt32 w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI4uivEXT", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI4uivEXT(UInt32 index, UInt32* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI4usvEXT", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI4usvEXT(UInt32 index, UInt16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribIPointerEXT", ExactSpelling = true)]
			internal extern static void glVertexAttribIPointerEXT(UInt32 index, int size, int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribL1dEXT", ExactSpelling = true)]
			internal extern static void glVertexAttribL1dEXT(UInt32 index, double x);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribL1dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribL1dvEXT(UInt32 index, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribL2dEXT", ExactSpelling = true)]
			internal extern static void glVertexAttribL2dEXT(UInt32 index, double x, double y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribL2dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribL2dvEXT(UInt32 index, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribL3dEXT", ExactSpelling = true)]
			internal extern static void glVertexAttribL3dEXT(UInt32 index, double x, double y, double z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribL3dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribL3dvEXT(UInt32 index, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribL4dEXT", ExactSpelling = true)]
			internal extern static void glVertexAttribL4dEXT(UInt32 index, double x, double y, double z, double w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribL4dvEXT", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribL4dvEXT(UInt32 index, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribLPointerEXT", ExactSpelling = true)]
			internal extern static void glVertexAttribLPointerEXT(UInt32 index, int size, int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexPointerEXT", ExactSpelling = true)]
			internal extern static void glVertexPointerEXT(int size, int type, Int32 stride, Int32 count, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexWeightfEXT", ExactSpelling = true)]
			internal extern static void glVertexWeightfEXT(float weight);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexWeightfvEXT", ExactSpelling = true)]
			internal extern static unsafe void glVertexWeightfvEXT(float* weight);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexWeightPointerEXT", ExactSpelling = true)]
			internal extern static void glVertexWeightPointerEXT(Int32 size, int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWriteMaskEXT", ExactSpelling = true)]
			internal extern static void glWriteMaskEXT(UInt32 res, UInt32 @in, int outX, int outY, int outZ, int outW);

		}

	}
}
